【问题标题】:Catch exception message doesn't displaying when trying to reload page尝试重新加载页面时未显示捕获异常消息
【发布时间】:2015-08-17 11:40:09
【问题描述】:

我有一个textbox 和一个dropdownlist。文本框默认为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);
}

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我使用异常的唯一原因是我无法显示消息。例外似乎是唯一可行的方法。
    【解决方案2】:

    关闭对话框后可以使用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";}
    });
    

    【讨论】:

    • 我需要 window.location 来执行此操作: Response.Redirect("Job.aspx?JobID=" + Request.QueryString["JobID"], false);我需要检查正在使用哪个作业 ID 并刷新该页面。只需刷新 Job.aspx 就可以让我退出我所在的当前工作页面
    • 我还注意到关闭异常消息后重定向页面需要一秒钟。如果有什么办法可以加快速度?
    • @user123456789 可以在 JS 中获取查询字符串并将其附加到重定向页面中,请查看 THIS LINK window.location.href = "Job.aspx?JobID=" + getParameterByName('JobID')+ "";
    猜你喜欢
    • 1970-01-01
    • 2021-02-17
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2014-05-11
    相关资源
    最近更新 更多