我目前遇到一个奇怪的问题,即当我点击一个只返回同一页面的asp.net按钮时,除了谷歌Chrome之外的所有浏览器都在Page_Load事件中注册对IsPostback的调用为真.
这让我试着发现ASP .Net页面中的IsPostback属性是如何在技术上实现的,这是我很难找到的.
我的想法是,它可能与以下内容有关;
任何人都可以提供用于确定IsPostback布尔属性的条件的实际细分吗?
注意:我正在寻找实际的实现而不是感知/理论,因为我希望用它来积极解决问题.我也搜索过MSDN,迄今为止找不到任何准确覆盖该机制的技术文章.
布莱恩,提前谢谢.
我有一个LinkButton在masterpage和的LinkButton的点击,我重定向到,比方说,Page1.aspx.在Page1.aspx上,我有一个button1.点击它button1,我打开新窗口,不影响数据Page1.aspx.
但是,当我点击LinkButton主页,重定向到Page1.aspx代码后面,单击时button1,Page1.aspx数据会被更改.
如何防止这种情况.我提供我的代码.
主页上的LinkButton:
<asp:LinkButton ID="lnkAppointMent" runat="server" OnClick="lnkAppointMent_Click"><span>Appointment Scheduler </span></asp:LinkButton>
Run Code Online (Sandbox Code Playgroud)
单击LinkButton的事件:
protected void lnkAppointMent_Click(object sender, EventArgs e)
{
Session["PhoneCenter"] = "Appointment";
Response.Redirect("PhoneMessage.aspx");
}
Run Code Online (Sandbox Code Playgroud)
PageLoad重定向页面(PhoneMessage.aspx):
protected void Page_Load(object sender, EventArgs e)
{
fillCustomTypeMessages();
if (!Page.IsPostBack)
{
.
.
.
else if (Session["PhoneCenter"].ToString() == "Appointment")
{
btnScheduleAppointments_Click(btnScheduleAppointments, null);
}
.
.
.
Run Code Online (Sandbox Code Playgroud)
PhoneMessage.aspx上的按钮:
<div style="float: right; padding-right: 120px">
<asp:Button ID="btnScheduleAppointments" runat="server" OnClick="btnScheduleAppointments_Click" …Run Code Online (Sandbox Code Playgroud) 我正在使用从数据库填充的checkbox列.下面的按钮应该检索已经检查过的行的数据.当我遍历所有行时,即使我在单击按钮之前检查了所有行,它们也都没有.这是代码:gridviewSQLgridviewcheckboxe'scheckboxe'schecked==trueASP.NET
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRow" runat="server" />
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
这是按钮的动作循环遍历所有行的复选框:
protected void GetSelectedRecords(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);
if (chkRow != null && chkRow.Checked) //chkRow.Checked is always "false"
{
string name = row.Cells[2].Text;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢提前.我非常感谢任何帮助.
我遇到了一个奇怪的问题.每次刷新页面IsPostBack都是假的.
为了确保我的内容或母版页中没有任何内容导致这种情况,我创建了一个空的Web表单并在调试模式下将其启动.仍然,在回发上,我已经IsPostBack设置为假.
我有enableSessionState="true"和<sessionState timeout="30" />web.config.
这让我疯了!
更新:我按F5刷新页面.根据答案,这不应该导致回发.我想知道什么时候使用刷新页面(甚至手动)并防止对db进行一些修改.
这有解决方案吗?
它是一个"最佳实践",总是在Web示例的Page_Load子例程中使用.IsPostBack,就像在这个示例编码中一样?
我希望可以提出这个问题.如果没有,我会立即删除这个问题.
基本上我想编码你大多数编码的方式.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
' More coding will go here.
'--------------------------
End If
Run Code Online (Sandbox Code Playgroud)
请给出它的用法的利弊.
asp.net ×5
ispostback ×5
c# ×2
asp.net-4.0 ×1
checkbox ×1
gridview ×1
http-headers ×1
http-verbs ×1
javascript ×1
postback ×1
vb.net ×1