我是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://localhost:1426/Actions/Contact.aspx?ContactID=78724&CompanyID=92971
但我希望将这些值存储在Page_load事件的Contact.aspx事件的会话变量中。
if (!Page.IsPostBack)
{
Session["ContactID"] = String.IsNullOrEmpty(Request.QueryString["ContactID"].ToString()) ? String.Empty : Session["ContactID"];
}但是我不能将会话变量存储在Page_Load上,因为NavigateUrl在加载此页面后显示值。
请帮帮我。
发布于 2014-01-18 08:45:29
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));
}https://stackoverflow.com/questions/21201441
复制相似问题