我有一堆文本框和一个保存按钮来更新一些东西。当我单击保存时,我在代码隐藏文件中有确定它们是否正确填写的代码。
如果它们没有正确填写,我想以警报的形式显示错误消息。
做这个的最好方式是什么?按下按钮显然会使页面回发,所以我想在 URL 中添加一些东西,mypage.aspx?errormessage=blahblah
但我不知道这是否是最好的方法,甚至是如何做到这一点......
有什么建议么?
我有一堆文本框和一个保存按钮来更新一些东西。当我单击保存时,我在代码隐藏文件中有确定它们是否正确填写的代码。
如果它们没有正确填写,我想以警报的形式显示错误消息。
做这个的最好方式是什么?按下按钮显然会使页面回发,所以我想在 URL 中添加一些东西,mypage.aspx?errormessage=blahblah
但我不知道这是否是最好的方法,甚至是如何做到这一点......
有什么建议么?
模态警报很糟糕,回发也是如此。尝试在客户端进行尽可能多的检查,而无需往返服务器。请参阅jQuery Validation plugins 以了解较少干扰的验证方式。
您可以使用 CustomValidator 来触发显示警报框的客户端脚本吗?
您可以在服务器端错误处理代码中使用 ClientScript.RegisterStartupScript() 方法来编写一个调用 alert('message') 的 javascript 片段,如下所示
private void ShowErrorMessage(string message)
{
string script = "alert('" + message + "');";
ClientScript.RegisterStartupScript(typeof(MyPage), "errorScript", script, true);
}
但我建议您改用验证器。如果您实现自己的自定义验证器,则可以使其发出可以在提交之前运行的客户端脚本,从而完全避免回发。
验证器的一个好处是它们的错误消息可以显示在页面上的 ValidatorSummary 中,避免了丑陋的警报框。
首先,我不建议向用户显示模式警报框。
您可以从服务器端代码调用 javascript 函数,并在该函数中弹出错误。
或者您可以发出 AJAX 请求,在服务器端验证后,您可以将响应发送回客户端。
ASP.NET 的各种验证控件(启用了客户端验证),再加上适当的错误消息和/或摘要消息,对于大多数情况来说已经足够了。
对于“AJAX 感觉和行为”,将控件放入更新面板也很容易实现。
尽可能多地使用您的验证器,它们向客户端呈现一些 javascript,因此您可以使用这些控件进行大量验证,并且只有当它们都满意时,它才允许提交页面。
它们确实会在每次提交时触发,因此如果您不希望每个提交操作都触发它们,则可以将控件作为验证组的一部分。
他们可以使用正则表达式验证输入,确保一个字段有一个值,还有更多。
然后是声明“消息”的属性和显示所有验证器消息的控件。一切都非常流畅,并内置在 IDE 中。
去检查验证器控件。
在您的按钮单击事件中尝试以下代码:
string strErr="Error!";//Put your error message here
ClientScript.RegisterStartupScript(GetType(), "scrptName", "javascript: alert('"+strErr+"'); ", true);
它将显示一条警报消息。
否则在您的 aspx 页面上放置标签并在 page_load 事件中设置可见 false。当您的按钮事件中发生错误时,将标签可见性设置为“true”并使用错误消息填充标签文本。