IsPostBack总是返回false

时间:2009-05-26 21:35:08

标签: c# asp.net html

每当我在PageLoad()中测试IsPostBack时,无论是否存在发布数据,都会返回false。我的第一反应是检查表单或提交按钮中是否缺少runat =“server”标记。但是,它们都已添加,并且WriteEmail.aspx页面仍然总是为IsPostBack返回false。我也尝试使用IsCrossPagePostBack代替IsPostBack。

ListInstructors.aspx:

<form runat="server" method="post" action="WriteEmail.aspx">
      ...
      <input type="submit" id="writeEmail" value="Write Email" runat="server" />
</form>

WriteEmail.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Response.Redirect("ListInstructors.aspx");
    }
}

2 个答案:

答案 0 :(得分:13)

发布!=回发。回发是指您回发到相同的页面。表单上的操作将发布到页面。

看起来你正在做的就是使用WriteEmail.aspx页面发送消息,然后回到原来的位置。你甚至没有显示表格来收集那里的文字。这是一个非常......经典的ASP-ish ......处理事物的方式。

相反,将您使用的代码放在类不同的类中发送消息,如果需要,将该类放在App_Code文件夹中。同时将提交按钮更改为<asp:button ... />然后,您只需将服务器点击事件中的代码称为按钮,就不要离开ListInstructors.aspx页。


回复您的评论:来自MSDN

  

...通过将页面URL分配给实现IButtonControl接口的按钮控件的PostBackUrl属性来发出跨页请求。

答案 1 :(得分:2)

IsPostBack不正确,因为表单未从WriteEmail.aspx页面提交;从同一页面提交表单是导致PostBack的原因。如果您从WriteEmail.aspx页面提交了表单,那么它将是PostBack;事实上,它只是一个帖子。

您可能会发现此MSDN参考很有用:

http://msdn.microsoft.com/en-us/library/ms178141.aspx