我在用:
Response.Redirect(Request.RawUrl);
在我的网页上强制回发。但是,代码中的执行路径就像是第一次加载页面一样。我如何引起普通的回发?
任何建议表示赞赏。
问候。
编辑:
这篇文章似乎吸引了很多负面情绪。在 Google 搜索强制回发后,我从 Stock Overflow 帖子中获得了这种方法。因此,反对者可能应该在那个帖子而不是我的帖子上表达他们的挫败感。
为了澄清对我的问题的一些误解:
我有一个事件 Button_Click,其中包含方法主体中的逻辑——显然。然而,代码的执行流程是这样的:
Button_Click --> Page_Load (IsPostBack == true) --> Button_Click body --> 执行结束。
所以我的问题是 Button_Click 正文中的任何逻辑都没有显示在页面上,因为回发是在 Button_Click 正文中的任何代码执行之前完成的。
编辑:
这是事件:
protected void RedoEdits_Click(Object sender, EventArgs e)
{
// Goes to Page_Load here with IsPostBack == true
string trendsFileLocation = currDir + "\\" + reportDir + "\\" + trendsFile;
string messagesFileLocation = currDir + "\\" + reportDir + "\\" + messagesFile;
if (File.Exists(trendsFileLocation))
{
File.Delete(trendsFileLocation);
}
if (File.Exists(messagesFileLocation))
{
File.Delete(messagesFileLocation);
}
trendsXML.Clear();
editMode = "redo";
}
IsPostBack == true 的代码片段:
if (editMode.Equals("redo"))
{
editMode = "";
ViewReport_Click(null, null);
}
代码片段永远不会被执行,因为回发首先发生,跳过片段,因为editMode!=重做,然后以RedoEdits_Click的主体结束,最终设置editMode ==重做,但由于回发已经发生,我们没有到达ViewReport_Click。
顺便说一句,editMode 是一个会话变量,因此它会持续存在。