在asp:HyperLink NavigateUrl中调用C#函数

在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

我有一个名为getUserID的函数,我想通过asp:HyperLink中的NavigateUrl传递用户ID

这是我的超链接:

            <asp:HyperLink ID="lnkMyAccount" Text="My Account" 
                NavigateUrl="~/Users/View.aspx" style="color:White" CssClass="myAreaLink" 
                Runat="server" Font-Size="Small" />
                &nbsp;|&nbsp;

| 
我试过了,但没有成功:

            <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" />
                &nbsp;|&nbsp;

在代码隐藏中做这件事怎么样

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();
}