![]() |
1
2
默认的验证消息是在建模绑定时创建的(也就是获取请求数据并将其应用于对象)。这可以通过标准表单提交、Ajax或任何其他方式来完成。 验证消息存储在viewdata.modelstate中。 验证消息的呈现是使用HTMLHelpers完成的,它只需查看ModelState并呈现任何适用的消息。作为呈现视图的一部分,htmlhelpers在服务器端完成。返回json将跳过渲染。您可以返回一个局部视图,该视图将呈现作为用户控件一部分的任何验证消息。 也就是说,如果您的控制器操作模型绑定并返回JSON,它仍然会在viewdata.modelstate中生成适当的验证信息。如果您想使用它,信息就在那里,但是它需要移动到您的模型中,并且您的客户端JavaScript代码需要知道如何处理它。 |
![]() |
2
3
我所做的是编写自己的extendedJSonResult类,该类继承自JSonResult,最初是为了向序列化过程中添加注册JavaScriptConverter的功能,但这之后允许我添加一个checkContextForErrors方法,该方法查看上下文的ModelState错误,并向JSon结果数据(属性名称,尝试的值,消息)。 我实现了自己的handlejsonerrorinfo类(基于handleerrorinfo)和handlejsonerrorrattribute,这些类在截获任何未处理异常并将异常消息作为json返回的操作上声明。 客户端我可以检查JSON响应中是否存在exceptionmessages数组,然后遍历每个错误。 |
![]() |
3
2
不,内置的JSonResult将只序列化它被赋予JSON的对象,并将其发送到线路上。如果您想发送验证错误,您必须将这些信息放在自己的对象中,并通过JSON发送这些信息。 |