网站上的按钮.Master不';从default.aspx单击时不会重定向,但该按钮可在所有其他页面上使用
本文关键字:按钮 其他 Master default 网站 单击 aspx 重定向 | 更新日期: 2023-09-27 18:29:22
我在使用Visual Studio开发的网站(ASP.NET)的Site.Master页上添加了一个搜索框。
问题然而,我注意到,当我访问default.aspx页面并单击"搜索"按钮时,它不会ReDirect(您可能会看到下面的代码)。然而,当我访问我网站的其他页面时,按钮会根据需要重定向。
更新我注意到default.apsx页面上的所有按钮都没有在default.aspx页面上引发回发。。。。在其他页面上。按钮工作正常。。。
代码:
SiteMaster
<body>
<form runat="server">
<asp:ScriptManager runat="server">
.......
</asp:ScriptManager>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
......
</div>
<div class="navbar-collapse collapse">
......
</div>
</div>
</div>
<br />
<div class="container body-content">
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
<div class="row">
<div class="col-md-8">
</div>
<div class="col-md-4">
<div class="input-group">
<asp:TextBox class="form-control" type="text" ID="tbSearch" width="100%" runat="server" placeholder="Search for recipes..."></asp:TextBox>
<span class="input-group-btn">
<asp:Button class="btn btn-primary" type="button" ID="btnSearch" runat="server" Text="Search Recipes" CausesValidation="False" OnClick="btnSearch_Click" ToolTip="Search Recipes" ValidateRequestMode="Disabled" />
</span>
</div>
</div>
</div>
<br />
<asp:ContentPlaceHolder ID="MainContent" runat="server">
.....
</asp:ContentPlaceHolder>
SiteMaster.cs
在后面的代码中,我有以下代码:
public partial class SiteMaster : MasterPage
{
private const string AntiXsrfTokenKey = "__AntiXsrfToken";
private const string AntiXsrfUserNameKey = "__AntiXsrfUserName";
private string _antiXsrfTokenValue;
protected void Page_Init(object sender, EventArgs e)
{
// The code below helps to protect against XSRF attacks
var requestCookie = Request.Cookies[AntiXsrfTokenKey];
Guid requestCookieGuidValue;
if (requestCookie != null && Guid.TryParse(requestCookie.Value, out requestCookieGuidValue))
{
// Use the Anti-XSRF token from the cookie
_antiXsrfTokenValue = requestCookie.Value;
Page.ViewStateUserKey = _antiXsrfTokenValue;
}
else
{
// Generate a new Anti-XSRF token and save to the cookie
_antiXsrfTokenValue = Guid.NewGuid().ToString("N");
Page.ViewStateUserKey = _antiXsrfTokenValue;
var responseCookie = new HttpCookie(AntiXsrfTokenKey)
{
HttpOnly = true,
Value = _antiXsrfTokenValue
};
if (FormsAuthentication.RequireSSL && Request.IsSecureConnection)
{
responseCookie.Secure = true;
}
Response.Cookies.Set(responseCookie);
}
Page.PreLoad += master_Page_PreLoad;
}
protected void master_Page_PreLoad(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Set Anti-XSRF token
ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey;
ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;
}
else
{
// Validate the Anti-XSRF token
if ((string)ViewState[AntiXsrfTokenKey] != _antiXsrfTokenValue
|| (string)ViewState[AntiXsrfUserNameKey] != (Context.User.Identity.Name ?? String.Empty))
{
throw new InvalidOperationException("Validation of Anti-XSRF token failed.");
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Unnamed_LoggingOut(object sender, LoginCancelEventArgs e)
{
Context.GetOwinContext().Authentication.SignOut();
}
protected void btnSearch_Click(object sender, EventArgs e)
{
var searchText = Server.UrlEncode(tbSearch.Text); // URL encode in case of special characters
Response.Redirect("~/Results.aspx?search=" + searchText);
}
}
默认.aspx.cs
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
Label2.Visible = true;
Label1.Visible = false;
tbPost.Visible = false;
Button1.Visible = false;
}
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
Label1.Visible = true;
Label2.Visible = false;
tbPost.Visible = true;
Button1.Visible = true;
}
if (!this.IsPostBack)
{
BindRpt();
}
}
实际上问题是由输入标记引起的。。。。因此,如果你们中的任何一个人会遇到这个问题,请遵循以下步骤:
-
检查页面上的任何java脚本
-
检查页面中是否有任何输入标记:-当我在输入标记中添加disable=''时,我的问题就解决了
-
您也可以创建一个新页面,将部分代码复制到其中,并检查它是否正常工作。。。。
这就是我解决问题的方法