带有部分视图和 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 客户端验证的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 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 加载部分视图