ASP.Net中的NavigateUrl

时间:2014-01-18 07:38:46

标签: asp.net

我是ASP.NET新手。我遇到了NavigateUrl的问题。

<td align="right" valign="middle">
    <p id="posCstmr">
        <asp:HyperLink ID="hlnkContact" CssClass="addbtn-cmplist" runat="server" NavigateUrl='<%# "Actions/Contact.aspx?ContactID=" + Eval("ContactID") + "&CompanyID=" + Eval("CompanyID") %>' Text="View"></asp:HyperLink>
    </p>
</td>

当我点击查看以下hlnkContact时,它会使用指定的值重定向到以下链接,这是正常的。

[HTTP://本地主机:1426 /操作/ Contact.aspx的ContactID = 78724&安培; CompanyID = 92971]

但我想将这些值存储在Contact.aspx的Page_load事件中的会话变量中。

if (!Page.IsPostBack)
{
     Session["ContactID"] = String.IsNullOrEmpty(Request.QueryString["ContactID"].ToString()) ? String.Empty : Session["ContactID"];
}

但是我无法在Page_Load上存储Session变量,因为NavigateUrl会在加载此页面后显示值。

请帮助我。

1 个答案:

答案 0 :(得分:1)

回答了HERE相同类型的问题,您可以调整如下:

[假设td位于任何数据绑定容器内,否则Eval将无效]

将您的标记更改为:

<td align="right" valign="middle">
    <p id="posCstmr">
        <asp:LinkButton ID="LinkButton1"  CssClass="addbtn-cmplist" runat="server"
            Text="View" CommandName="Link" CommandArgument='<%#Eval("ContactID") + ";" + Eval("CompanyID") %>'
            OnClick="ButtonLink_Click" />
    </p>
</td>

代码:

protected void ButtonLink_Click(object sender, System.EventArgs e)
{
    LinkButton lb = (LinkButton)sender;
    string[] arguments = lb.CommandArgument.Split(';');
    string ContactID = arguments[0];
    string CompanyID = arguments[1];

    //Save in session
    Session["ContactID"] = ContactID ;
    Session["CompanyID"] = CompanyID ;

    //Redirect
    Response.Redirect(string.Format("Actions/Contact.aspx?ContactID={0}&CompanyID={1}", ContactID, CompanyID));
}