c# - IsPostBack 始终返回 false

标签 c# asp.net html

每次我在 PageLoad() 中测试 IsPostBack 时,无论发布数据是否存在,都会返回 false。我的第一 react 是检查表单或提交按钮中是否缺少 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>

写邮件.aspx:

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

最佳答案

Post != Postback。回发是指您回发到同一页面。您表单上的操作是发布到一个页面。

看起来您所做的只是使用 WriteEmail.aspx 页面发送消息,然后返回到您刚才所在的位置。你甚至没有显示一个表单来收集那里的文本。这是一种非常...经典的 ASP-ish...处理事情的方式。

相反,将用于发送消息的代码放在单独的类中,如果需要,将类放在 App_Code 文件夹中。同时将提交按钮更改为 <asp:button ... />然后你可以将它称为来自服务器的按钮的 Click 事件的代码,永远不要离开你的 ListInstructors.aspx页面。


回应您的评论:否。来自 MSDN :

... make a cross-page request by assigning a page URL to the PostBackUrl property of a button control that implements the IButtonControl interface.

关于c# - IsPostBack 始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912888/

相关文章:

javascript - 无法使 document.GetElementById 正常工作

asp.net - 如何使用asp.net打开、编辑和保存word文档

html - 我的 div 文本隐藏在英雄图像后面

c# - Linq 查询以检索具有最大值的所有对象

c# - 重写ToString还是为接口(interface)提供非ToString命名扩展方法?

c# - 为什么在有效的双输入时收到 FormatException?

c# - asp.net: c#/javascript 用户提交前需要确认

html - 使用 CSS 包装一个长单词

html - 拉伸(stretch) table 以垂直适合 TD

c# - Windows服务自动启动和停止,异常处理问题