IsPostBack总是返回false

4 html c# asp.net

每当我在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>
Run Code Online (Sandbox Code Playgroud)

WriteEmail.aspx:

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

Joe*_*orn 13

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

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

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


在回复您的评论时:不.来自MSDN:

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