我有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);
}
答案 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";}
});