每次我在 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/