2

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

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

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

4

1 回答 1

2

仅在以下情况下才会发出不显眼的验证属性:

  • UnobtrusiveJavaScriptEnabled标志设置为true
  • ViewContext.FormContext不是null(例如 Html 助手在块内执行Html.BeginForm

因此,您可以在使用 Html 帮助程序之前手动创建FormContext并分配它:ViewContext.FormContext

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

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

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

于 2012-11-12T06:08:55.840 回答