gpt4 book ai didi

javascript - 母版页上的 LinkBut​​ton 不会在 ASP.NET 中的第二个子页上触发

转载 作者:搜寻专家 更新时间:2023-11-01 04:40:27 25 4
gpt4 key购买 nike

我正在 ASP.NET (Framework 4.0) 中创建项目。我在母版页中使用了 Asp LinkBut​​ton,它有 2 个页面与之链接(Home.aspx 和 service.aspx)。

问题如下:LinkBut​​ton1 适用于 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>

LinkBut​​ton1 点击的 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 和 service.aspx 之间存在差异(同时通过 chrome 浏览器检查元素)?

最佳答案

感谢原创Answer作者 & 感谢@Nimesh 提供链接。

为 LinkBut​​ton 服务器控件设置 PostBackUrl 属性,这意味着它是跨页发布,然后 asp.net 框架而不是正常的 __DoPostBack() 添加“WebForm_DoPostBackWithOptions”。

我已经根据我的代码要求做了一些修改。

LinkBut​​ton1 (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>

如果在您的情况下您没有设置“PostBackUrl”,那么 ASP.NET 框架在默认情况下也不会为按钮控件添加它,所以这意味着必须有另一个控件可能使用以下服务器设置 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");
}

关于javascript - 母版页上的 LinkBut​​ton 不会在 ASP.NET 中的第二个子页上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com