我是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会在加载此页面后显示值。
请帮助我。
答案 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));
}