0

我是 Web 开发的新手(尽管对 WinForms developmentmet 并不陌生),我想知道在客户端和服务器端处理错误的正确和有效的方法。

例如,用户输入了错误的邮政编码(使用字母),我想通知用户输入了错误的邮政编码,我该如何处理?

我假设这将在客户端,但谁能给我看一个示例代码?您应该使用哪种脚本语言?你应该在屏幕上显示一条消息吗?你应该让错误信息可见吗?这样做的标准方法是什么?

示例二:用户单击在服务器数据库中运行查询的内容。发生错误。如何将错误通知用户?

通常在 Win Forms 中我可以这样做:

try
{
     CreateDirectoriesAndSystemFiles();
}
catch (Exception ex)
{
     ErrorLogger.LogError(ex.Source, ex.TargetSite.ToString(), "Error creating directories!; " + ex.Message);
     MessageBox.Show(ex.Message, "Error creating directories!", MessageBoxButtons.OK, MessageBoxIcon.Error);
     return;
}

如何在 Web 环境中模仿上述内容?

4

6 回答 6

1

1 对于客户端通知,您可以使用验证器

链接:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx

这个链接是关于RequiredFieldValidator

你还有CompareValidator, CustomValidator等等……

链接:http: //msdn.microsoft.com/en-us/library/ms972961.aspx

这是很好的解决方案。

2 对于治疗异常,您可以使用Global.asaxApplicatio_Error

链接:http: //msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx

于 2012-09-13T19:31:51.830 回答
1

大多数人使用 jQuery validate 是因为它非常易于使用,同时非常强大和灵活。文档在这里http://docs.jquery.com/Plugins/Validation。Microsoft 默认将它们包含在 MVC 3 和 4 中,并将其用于模型验证客户端,因此如果您使用 MS 堆栈和 MVC,那是使用它的另一个好理由。Web 窗体中的情况有所不同,因为您倾向于使用内置的验证控件来处理客户端和服务器端的开箱即用参考http://msdn.microsoft.com/en-us/library/a0z2h4sw(v =vs.100).aspx - 这些可以通过自定义验证器类型进行扩展,允许您指定您自己编写的用于处理定制功能的服务器和客户端方法。希望这可以帮助!

于 2012-09-13T19:36:29.897 回答
0

asp.net 可以对服务器端错误执行相同的 try/catch 处理。

就输入验证而言,您应该查看Asp.net Input Validation Controls

于 2012-09-13T19:33:22.613 回答
0

例如 #2 你可以重定向到错误页面

try
{
     CreateDirectoriesAndSystemFiles();
}
catch (Exception ex)
{
     Response.Redirect("Error.aspx?err=" + ex.GetType());
}

并在 Error.aspx 页面上解析 err 参数并将其显示给用户。

好主意是将其记录在数据库中(如果您使用它)。

于 2012-09-13T19:33:46.950 回答
0

取决于您使用的是网络表单还是 MVC。

在 MVC 中,通常对于服务器端错误处理,我创建了一个 ApplicationController 类,该类继承并放置我的错误处理、日志记录和重定向逻辑,然后让我的控制器继承这个类。

对于网络表单,我将创建一个错误控件并将其包含在我的母版页中,并将服务器端错误反馈给它。

无论哪种情况,对于客户端,您都可以使用 jquery 和 javascript 进行字段验证。

于 2012-09-13T19:35:07.687 回答
0

你问了很多问题,我试着回答几个:

  1. 关于验证(邮政编码示例) - 首先,我不能强调这一点 -始终验证服务器端客户端代码(例如 javascript)上的内容可以轻松关闭/规避。即使您在客户端检查(并且您应该) - 也始终在服务器端检查它们。
    也就是说,使用什么验证框架取决于您使用的显示框架。我过去使用过jquery 的验证,对此我很满意。

  2. 您应该使用哪种脚本语言?好吧,如果那个答案有一个正确的答案,那么有这么多就没有多大意义了,对吧:)
    无论如何,jQuery非常流行,但knockoutJS也是如此,而且我听说angular越来越受欢迎。看看你喜欢哪一个

  3. 对于服务器端的意外错误,有一些很好的建议。我喜欢阿吉拉斯·雅库布的。

祝你好运

于 2012-09-13T19:37:46.910 回答