带有部分视图和 Ajax 的 ASP.NET MVC 客户端验证

Posted

技术标签:

【中文标题】带有部分视图和 Ajax 的 ASP.NET MVC 客户端验证【英文标题】:ASP.NET MVC client validation with partial views and Ajax 【发布时间】:2011-02-09 15:48:51 【问题描述】:

我正在使用MVC 2.0框架的客户端验证功能 (html.ValidationMessageFor()Html.EnableClientValidation())。

当我以简单的形式使用验证时,一切都很好。

但是当我通过 jQuery Ajax 得到这个表单时

$.get('PathToMyForm', function(htmlResult) 
    $('selector').html(htmlResult);
);

客户端验证不起作用。为什么?

【问题讨论】:

怎么不起作用?新字段未验证?什么都没有验证?验证码在哪里?在偏?在包含页面中?多一点代码和解释会很有帮助。 tvanfosson,我有具有 [Required] 属性的模型。在常见情况下(没有 AJAX,只有 Html.RenderPartial)客户端验证工作正常 - 如果我在文本框中键入空字符串并关注另一个文本框,我会收到验证消息。但是使用 AJAX - 我没有收到此消息。 【参考方案1】:

如果您使用 jquery.validate(尤其是使用 MVC)并且您正在通过 AJAX 加载页面,则需要在页面加载后进行以下调用:

$.validator.unobtrusive.parse($("#validation"));

在我的博文中查看更多信息:Using Unobtrusive jQuery Validation with Forms Loaded via AJAX

【讨论】:

【参考方案2】:

我也遇到了 MVC 验证和部分视图的问题。我通过使用 jquery.validate.js 而不是内置的客户端验证对其进行了整理。你可以试试看。

【讨论】:

jQuery.validate 看不到我的模型。我想在模型类中定义验证规则。 你可以这样做。检查 ASP.NET MVC 期货aspnet.codeplex.com/releases/view/41742【参考方案3】:

也许 jQuery 没有评估 Ajax 响应上的 javascript 代码?

尝试在 Ajax 调用中使用 dataType 属性,

$.get('PathToMyForm', dataType 'html', function(htmlResult) 
    $('selector').html(htmlResult);
);

来自jQuery documentation:

dataType 默认值:智能猜测(xml、json、script 或 html)

您期望从服务器返回的数据类型。如果没有指定,jQuery 将根据响应的 MIME 类型智能地尝试获取结果(XML MIME 类型将产生 XML,在 1.4 中 JSON 将产生 JavaScript 对象,在 1.4 中脚本将执行脚本,以及任何else 将作为字符串返回)。

【讨论】:

Rafael Mueller,谢谢你的回答,但这对我没有帮助。我已将 alert('scripts test') 包含在我的部分视图中 - 它有效。但我仍然有验证问题。

以上是关于带有部分视图和 Ajax 的 ASP.NET MVC 客户端验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 部分视图 ajax 帖子?

如何使用 jquery 或 ajax 在 c#/asp.net 中为 MVC 项目更新 razor 部分视图

如何在 ASP.NET MVC 部分视图中使用 JQuery 表排序器插件?当我在视图中插入 PartialView 时,我使用的是 ajax

ASP.NET MVC 强类型部分视图,给出无法加载类型错误

parserrror SyntaxError: Unexpected token < - 在 ASP.NET MVC 4 中使用 jQuery Ajax 加载部分视图

ASP.NET MVC 在 Ajax 调用控制器后显示视图