服务器端验证,如何在MVC中传递错误进行查看?

时间:2009-01-28 20:29:41

标签: javascript asp.net-mvc error-handling

使用.net MVC,我在处理表单帖子的Action中进行了一些服务器端验证。

将错误传递回视图的好方法是什么?

我正在考虑创建一个错误集合,然后将该集合添加到我的ViewData中,然后以某种方式编织一些javascript(使用jQuery)来显示错误。

jQuery有一种自动显示错误的方式会很好,因为这是一种常见的模式。

你做什么?

5 个答案:

答案 0 :(得分:9)

您希望将错误添加到ModelState,如@Mehrdad所示。

...
catch (ArgumentOutOfRangeException e)
{
    ModelState.AddModelError( e.ParamName, e.Message );

    result = View( "New" );
}

并在您的视图中包含ValidationSummary

<%= Html.ValidationSummary() %>

答案 1 :(得分:1)

ViewData.ModelState旨在将状态信息(错误)从控制器传递到视图。

答案 2 :(得分:0)

不太确定它是否是你想要的,但在http://bassistance.de/jquery-plugins/jquery-plugin-validation/有一个非常容易使用的jquery表单验证插件。它以红色自动显示错误消息。

当然,你仍然需要进行服务器端验证,并传回错误。 tvanfosson向你展示了他的答案。

答案 3 :(得分:0)

我使用内置ModelState对象来保存我的验证错误。验证通过绑定或手动支持手动添加如下错误:

ModelState.AddModelError("LastName","Last name can't be Doe")

为了支持ajax表单post方案,我为ModelStateDictionary GetErrors()创建了一个扩展方法,它返回一个轻型ModelStateErrorsDTO对象(适用于json序列化的模型状态验证错误的扁平版本) )。

当表单帖子是ajax请求时,我返回一个json序列化ModelStateErrorsDTO

在jquery方面,我编写了一个辅助函数,使用默认的mvc css类将验证错误放在相关的输入字段旁边,即input-validation-error

通过这种方式,您可以使用验证消息制作不引人注目的ajaxforms。

希望这有帮助。

答案 4 :(得分:-1)

是的,这是好方法,但无论如何你可以把错误信息放到你自己的ViewData [“key”] =“页面错误... bla ... bla ... bla ...”

<% if (!string.IsNullOrEmpty(ViewData["key"]+"")) { %>

<div>
Yor customized error template
</div

<% } %>