每次我在PageLoad()中测试IsPostBack时,无论post数据是否存在,都会返回false。我的第一个反应是检查表单或提交按钮中是否缺少服务器“runat=”标记。但是,它们都已添加,对于IsPostBack,WriteEmail.aspx页面仍然总是返回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");
}
}发布于 2009-05-26 21:38:26
回发!= Postback.回发是指您回发到同一页面。表单上的操作是发布到新页面。
看起来您所要做的就是使用WriteEmail.aspx页面发送一条消息,然后返回到刚才所在的位置。您甚至没有在那里显示用于收集文本的表单。这是一个非常..。经典的ASP-ish...处理事情的方式。
相反,将用于发送消息的代码放在单独的类中,如果需要,将类放在App_Code文件夹中。另外,将submit按钮更改为一个<asp:button ... />,然后您就可以将它称为您的按钮的服务器的Click事件中的代码,并且永远不会离开您的ListInstructors.aspx页面。
对你的评论的回应:不。来自MSDN
...通过将页面URL分配给实现IButtonControl接口的按钮控件的PostBackUrl属性来发出跨页请求。
发布于 2009-05-26 21:38:43
IsPostBack不是真的,因为表单不是从WriteEmail.aspx页面提交的;从同一页面提交表单会导致PostBack。如果表单是从WriteEmail.aspx页面提交的,那么它将是一个PostBack;实际上,它只是一个帖子。
您可能会发现此MSDN参考资料很有用:
http://msdn.microsoft.com/en-us/library/ms178141.aspx
https://stackoverflow.com/questions/912888
复制相似问题