ASP.NET MVC验证将类添加到包含div

Bac*_*tnz 5 asp.net-mvc twitter-bootstrap

我正在使用bootstrap CSS表单样式,当文本框获得验证错误消息时,我需要将类"错误"放在容纳上.我怎样才能做到这一点?

问题是,在提交表单之前,所有验证都在ajax上触发,除了我的自定义验证器,它只在帖子上触发.所以需要确保两种情况都发生.

http://twitter.github.com/bootstrap/base-css.html#forms

Bac*_*tnz 7

onError在jquery.validate.unobtrusive中的函数内部,只需添加如下所示的.addClass("error")行:

function onError(error, inputElement) {  // 'this' is the form element
  var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
      replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;

  container.removeClass("field-validation-valid").addClass("field-validation-error");
  error.data("unobtrusiveContainer", container);
  container.parents(".field-encapsulator:first").addClass("error");

  if (replace) {
    container.empty();
    error.removeClass("input-validation-error").appendTo(container);
  }
  else {
    error.hide();
  }
}
Run Code Online (Sandbox Code Playgroud)


Max*_*oro 5

ASP.NET MVC将field-validation-error类添加到错误消息元素,并input-validation-error通过javascript在服务器端和客户端形成控件.没有包含元素,根据您的代码,表单控件及其标签可能在也可能不在同一个包含元素下.而且,即使它们这样做,MVC也会将提到的类设置为表单控件和错误消息元素,而不是包含元素.

此外,使用Html.EditorForModel()生成的标记自动生成表单时,如下所示:

<div class="editor-label"><label for="foo">Foo</label></div>
<div class="editor-field"><input name="foo"/></div>
Run Code Online (Sandbox Code Playgroud)

control-group在Twitter Bootstrap上没有可以映射到类的包含元素.您可以通过添加EditorTemplates/Object.cshtml模板来更改此模板.

我建议你将Twitter Bootstrap改编为ASP.NET MVC,而不是相反.