我正在ASP.NET(Framework 4.0)中创建项目。我在Master Page&amp ;;中使用了Asp LinkButton。它有2页链接(Home.aspx& service.aspx)。
问题如下: LinkButton1适用于Home.aspx,不适用于service.aspx 。
User.master代码如下
<ul class="nav navbar-nav navbar-right">
<li>
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" AutoPostBack="true">Signout
<i class="glyphicon glyphicon-off"></i>
</asp:LinkButton>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<span>
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
</span>
<i class="icon-user fa"></i>
<i class=" icon-down-open-big fa"></i>
</a>
<ul class="dropdown-menu user-menu">
<li class="active">
<a href="frmUserHome.aspx">
<i class="icon-home"></i> My Account
</a>
</li>
<li >
<a href="frmUserHome.aspx">
<i class="icon-home"></i> Personal Home
</a>
</li>
<li>
<a href="#">
<i class="icon-hourglass"></i> Pending approval
</a>
</li>
</ul>
</li>
</ul>
LinkButton1的User.master.cs代码单击
protected void LinkButton1_Click(object sender, EventArgs e)
{
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
FormsAuthentication.SignOut();
Session.Abandon();
Response.Redirect("~/Default.aspx");
}
在Home.aspx页面上检查元素(使用Chrome浏览器)时,我发现下面的代码
<li>
<a id="ctl00_LinkButton1" autopostback="true" href="javascript:__doPostBack('ctl00$LinkButton1','')">Signout
<i class="glyphicon glyphicon-off"></i>
</a>
</li>
和service.aspx(Chrome浏览器检查元素)
<li>
<a id="ctl00_LinkButton1" autopostback="true" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$LinkButton1", "", true, "", "", false, true))'>Signout
<i class="glyphicon glyphicon-off"></i>
</a>
</li>
为什么他们的Home.aspx&amp; service.aspx(通过chrome浏览器检查元素)?
答案 0 :(得分:0)
感谢原创Answer作家&amp;感谢@Nimesh提供链接。
设置LinkButton服务器控件的PostBackUrl属性,然后意味着它是跨页面发布,然后asp.net框架而不是普通的__DoPostBack()添加&#34; WebForm_DoPostBackWithOptions&#34;。
我根据我的代码要求进行了一些更改。
LinkButton1(User.master)页面的代码
<li>
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click" PostBackUrl="~/Default.aspx">Signout
<i class="glyphicon glyphicon-off"></i>
</asp:LinkButton>
</li>
如果在你的情况下你没有设置&#34; PostBackUrl&#34;,那么ASP.NET框架也默认不为Button Control添加它,所以这意味着必须有另一个控件设置OnClick属性值可能使用以下服务器端代码。
User.master.cs的代码
protected void LinkButton1_Click(object sender, EventArgs e)
{
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Value = string.Empty;
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-20);
}
FormsAuthentication.SignOut();
Session.Abandon();
PostBackOptions myPostBackOptions = new PostBackOptions(this);
myPostBackOptions.ActionUrl = "~/Default.aspx";
myPostBackOptions.AutoPostBack = false;
myPostBackOptions.RequiresJavaScriptProtocol = true;
myPostBackOptions.PerformValidation = true;
// Add the client-side script to the HyperLink1 control.
LinkButton1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions);
Response.Redirect("~/Default.aspx");
}