在asp:HyperLink NavigateUrl中调用C#函数
我有一个名为getUserID的函数,我想通过asp:HyperLink中的NavigateUrl传递用户ID 这是我的超链接:在asp:HyperLink NavigateUrl中调用C#函数,c#,asp.net,C#,Asp.net,我有一个名为getUserID的函数,我想通过asp:HyperLink中的NavigateUrl传递用户ID 这是我的超链接: <asp:HyperLink ID="lnkMyAccount" Text="My Account" NavigateUrl="~/Users/View.aspx" style="color:White" CssClass="myAreaLink" Runat="serv
<asp:HyperLink ID="lnkMyAccount" Text="My Account"
NavigateUrl="~/Users/View.aspx" style="color:White" CssClass="myAreaLink"
Runat="server" Font-Size="Small" />
|
|
我试过了,但没有成功:
<asp:HyperLink ID="lnkMyAccount" Text="My Account"
NavigateUrl='<%# "~/Users/View.aspx" + CPDManagement._code.SearchSelection.getUserID().Tables[0].Rows[0]["u_ID"].ToString() %> style="color:White" CssClass="myAreaLink"
Runat="server" Font-Size="Small" />
|
在代码隐藏中做这件事怎么样
if(Page.IsPostBack)
{
lnkMyAccount.NavigateUrl = String.Format("~/Users/View.aspx?UserID={0}", myUserID);
}
因此,它将以编程方式覆盖导航URL
这对你有用吗
通过调用页面上的数据绑定,您可能可以使
数据绑定语法正常工作
if(Page.IsPostBack)
{
Page.DataBind();
}
我会用第一种方法,不过现在试试
您错过了样式之前的“
我希望您处于绑定模式。(在中继器内…)
编辑
它确实有效
也许你的CPD管理有问题
使用asp:Linkbutton
,并向commandArgument
属性提供所需的值
例:
试试下面的代码
HTML
是的,我注意到我错过了一个,但它仍然不起作用。在我做了这件事之后,连超链接都没有。罗伊,这可能是因为我既没有在中继器中也没有在绑定模式下使用它吗?有没有办法不用在中继器或绑定模式下使用它?@nick没有。因为您在服务器端标记中使用了“#”+服务器端函数。@nick主要的区别是,在使用Page.DataBind方法之后,所有数据源都绑定到它们的服务器控件上打电话。因此,如果你有多文件可绑定的源代码,它们都会运行。谢谢你的回答,这是母版页上的一个“选项卡链接”,我只是想避免在代码中使用它……没问题,你可以始终使用page.master.FindControl来获取链接。实际上,我只需放置page.DataBind()就可以让它工作,而且它工作了。将这个Page.DataBind()放在Page_Load()中会不会导致任何问题?我会把它放在这里-使用!第11页加载子句。但是它会绑定所有控件,如果你有一个网格视图,那么它也会绑定。您可以尝试lnkMyAccount.DataBind()-我相信这在ASP.Net 3.5和UP3中是有效的。您是否正在尝试显示多个超链接控件?
<asp:HyperLink ID="lnkMyAccount" Text="My Account"
NavigateUrl='<%# "~/Users/View.aspx" + CPDManagement._code.SearchSelection.getUserID().Tables[0].Rows[0]["u_ID"].ToString() %> ' style="color:White" CssClass="myAreaLink"
Runat="server" Font-Size="Small" />
<asp:LinkButton ID="lnkbtnMyLink" runat="server" commandArgument='<%# Eval("ID")%>' />
<asp:GridView ID="grd" runat="server" onrowdatabound="grd_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="delete" runat="server" Text='<%#GetData().Rows[0][0].ToString() %>' CommandName="delete"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
public DataTable GetData()
{
DataTable Dt = new DataTable();
DataColumn DC = new DataColumn("Test");
Dt.Columns.Add(DC);
DataRow Dr = Dt.NewRow();
Dr["Test"] = "1";
Dt.Rows.Add(Dr);
return Dt;//.Rows[0]["test"].ToString();
}
protected void Page_Load(object sender, EventArgs e)
{
grd.DataSource = GetData();
grd.DataBind();
}