尝试重新加载页面

时间:2015-08-17 11:40:10

标签: c# asp.net exception exception-handling page-refresh

我有textboxdropdownlist。文本框默认为1,但如果用户在文本框中输入其他值,则必须从dropdownlist中选择一个值。如果他们未从dropdownlist中选择值,则会显示exception消息,并且不会保存他们对文本框所做的更改。问题是当我重新打开页面时,文本框中的值仍然存在。如果我手动刷新页面,则默认返回1.所以我在异常消息出现后尝试刷新页面,但如果我在异常后放置代码刷新页面,则消息不再出现。 如何在用户关闭异常消息后刷新页面?

JobPieceSerialNo SerNo = new JobPieceSerialNo(job.ID);
if (SerNo.Reason == null)
{
         throw new Exception("Must select reason");
}

catch (Exception ex)
{
    ClientScript.RegisterClientScriptBlock(this.GetType(), "Message",
                                          "<script>$(document).ready(function () {  $(\"<div>" + "Please note : " + ex.Message + "</div>\").dialog({modal: true,title: \"NOTE\",buttons: [ { text: \"Ok\", click: function() { $( this ).dialog( \"close\" ); } } ]}); ShowHidePointToPoint('OVERNIGHT');});</script>");
    Response.Redirect("Job.aspx?JobID=" + Request.QueryString["JobID"], false);
}

2 个答案:

答案 0 :(得分:0)

你几乎肯定不想在这里抛出异常,看起来你正在使用异常来处理正常的UI验证,如果是这样,这很不寻常。

有一些非常标准的方法可以验证用户输入并将验证结果呈现给用户,this article描述了简单的c#验证,它似乎比投掷和捕获异常更适合您的问题。

答案 1 :(得分:0)

关闭对话框后,您可以使用windows.location

您的catch将是这样的:

    catch (Exception ex)
{
    ClientScript.RegisterClientScriptBlock(this.GetType(), "Message",
                                          "<script>$(document).ready(function () {  $(\"<div>" + "Please note : " + ex.Message + "</div>\").dialog({modal: true,title: \"NOTE\",buttons: [ { text: \"Ok\", click: function() { $( this ).dialog( \"close\" ); window.location.href = 'Default.aspx'; } } ]}); ShowHidePointToPoint('OVERNIGHT');});</script>");

}

或者您也可以在对话框的close功能中将窗口位置更改为当前页面。

JQuery UI对话框有一个close事件:

    $( ".selector" ).dialog({
  close: function( event, ui ) {window.location.href ="Job.aspx";}
});