Javascript 服务器端验证,如何将错误传递到MVC中查看?

Javascript 服务器端验证,如何将错误传递到MVC中查看?,javascript,asp.net-mvc,error-handling,Javascript,Asp.net Mvc,Error Handling,使用.NETMVC,我正在处理表单post的操作中进行一些服务器端验证 将错误传递回视图的好方法是什么 我正在考虑创建一个错误集合,然后将该集合添加到我的ViewData中,然后以某种方式编织一些javascript(使用jQuery)来显示错误 如果jQuery有一些自动显示错误的方式就好了,因为这是一种常见的模式 您要做什么?查看数据。ModelState用于将状态信息(错误)从控制器传递到视图。您要将错误添加到ModelState,如@Mehrdad所示 ... catch (Argume

使用.NETMVC,我正在处理表单post的操作中进行一些服务器端验证

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

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

如果jQuery有一些自动显示错误的方式就好了,因为这是一种常见的模式


您要做什么?

查看数据。ModelState
用于将状态信息(错误)从控制器传递到视图。

您要将错误添加到ModelState,如@Mehrdad所示

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

    result = View( "New" );
}
并在视图中包含ValidationSummary

<%= Html.ValidationSummary() %>

是的,这是一个很好的方法,但无论如何,您可以将错误消息放到自己的ViewData[“key”]=“第页上的错误…bla…bla…bla…”


Yor自定义错误模板

不太确定它是否是您想要的,但在jquery上有一个非常易于使用的表单验证插件。它会自动以红色显示错误消息


当然,您仍然需要进行服务器端验证,并传回错误。tvanfosson在他的回答中向您展示了如何保存验证错误。

我使用内置的
ModelState
对象。验证可以在绑定中完成,也可以通过手动添加以下错误来支持:

ModelState.AddModelError(“LastName”,“LastName不能是Doe”)

为了支持ajax表单post场景,我对ModelStateDictionary做了一个扩展方法,
GetErrors()
,它返回一个轻型的
ModelStateErrorsTo
对象(适用于json序列化的modelstate验证错误的扁平版本)

当表单post是ajax请求时,我会返回一个json序列化的
modelstateErrorsTo

在jquery方面,我编写了一个帮助函数,它使用默认的mvc css类将验证错误放置在相关的inputfields旁边,即
输入验证错误

通过这种方式,您将能够生成带有验证消息的不引人注目的ajaxforms


希望这能有所帮助。

为了扩展这一点,它还向使用HtmlHelpers创建的输入添加了一个验证错误类,并且您可以使用使用相同ModelState的HtmlHelpers在视图中的任何位置显示字段唯一消息。一个统一服务器/客户端验证的框架正在开发中:google xval。它在视图中进行验证,这与MVC的全部内容背道而驰。你有这样一个例子吗?我也希望看到一个例子。我已经试着弄清楚这一点有一段时间了,从来没有想过要将ModelStateErrors作为JSON对象传递
<% if (!string.IsNullOrEmpty(ViewData["key"]+"")) { %>

<div>
Yor customized error template
</div

<% } %>