asp.net-mvc-3 - 使用 Html.EditorFor() 方法(不在 Html.BegingForm() 方法内)在 View 中添加验证属性

标签 asp.net-mvc-3 razor jquery-validate unobtrusive-validation

我注意到验证属性仅添加到通过 Html.EditorFor() 辅助方法创建且位于 Html.BegingForm() 内的元素中方法,分别创建“Form”标签和属性。

除了手动创建元素和属性之外,还有什么方法可以将所需的验证属性添加到使用辅助方法创建且不在 Html.BegingForm() 方法内的元素中?

我需要在客户端进行验证,并且不想手动创建所述属性或显式编写此行为的脚本,而是利用 MVC 功能,根据模型上的元数据自动添加所述属性,以便与客户端的 jquery-validate 插件。

最佳答案

仅在以下情况下才会发出不引人注目的验证属性:

  • UnobtrusiveJavaScriptEnabled 标志设置为 true
  • ViewContext.FormContext 不是 null(例如,Html 帮助程序在 Html.BeginForm block 内执行)

因此,您可以在使用 Html 助手之前手动创建 FormContext 并将其分配给 ViewContext.FormContext:

@{
    ViewContext.FormContext = new FormContext();
}

@Html.TextBoxFor(x => x.SomeProperty)

但是您应该注意,使用这种方法您会失去 Html.BeginForm 的嵌套功能,因此如果您想创建一个新的逻辑表单,您需要再次创建 new FormContext() 并自己管理旧上下文。

关于asp.net-mvc-3 - 使用 Html.EditorFor() 方法(不在 Html.BegingForm() 方法内)在 View 中添加验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336830/

相关文章:

c# - TagBuilder 不跨 ajax 请求生成唯一的 id 属性值

jquery - 如何使用 jQuery Validate 在字段为空时显示错误 onblur?

asp.net-mvc - MVC 中是否有最佳实践和推荐的 Session 变量替代方案

c# - 是否可以将 DataAnnotations 与接口(interface)继承一起使用?

html - 获取具有相同名称的多个表单值( bool 大小写)

c# - 在 MVC/Razor 中,如何获取多个复选框的值并将它们全部传递给 Controller ​​?

javascript - 使用 jQuery 插件检查用户名是否有效

jQuery 验证器 - 离开焦点后检查输入字段

asp.net-mvc-3 - 编辑连接字符串 MVC3 LINQ

asp.net - 如何使用只有一个用户的 ASP.NET MVC 项目