【问题标题】:Custom client-side ASP.NET MVC 3 Validation自定义客户端 ASP.NET MVC 3 验证
【发布时间】:2012-10-12 16:43:32
【问题描述】:

我想更改 ASP.NET MVC 3 以这种方式使用的客户端验证的默认行为:

如果有错误,我不希望在 HTML 中添加任何跨度来显示我的错误。 我唯一想要的是更改有错误的输入字段的颜色。

我不知道这是否是“正确”的做法,但我已经这样做了:

我编辑了 jquery.validate.unobtrusive.js:

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

  container.removeClass( "field-validation-valid" ).addClass( "field-validation-error" );

  inputElement.addClass( "custom-validation-error" ); // <--------- this is my edit
  error.data( "unobtrusiveContainer", container );

  if( replace )
  {
     container.empty();
     error.removeClass( "input-validation-error" ).appendTo( container );
  }
  else
  {
     error.hide();
  }
 }

这只会添加名为 custom-validation-error 的类,它会更改输入字段的颜色。 但是,如果一切正常,我该如何删除这个类?

我如何停止将跨度添加到我的 HTML 中?

谢谢。

【问题讨论】:

    标签: javascript jquery asp.net-mvc asp.net-mvc-3 client-side-validation


    【解决方案1】:

    只需删除Html.ValidationMessageFor 字段,该字段负责添加将显示错误消息的&lt;span&gt; 标记。所以你只需要一个Html.EditorFor。然后摆脱你写的javascript。

    【讨论】:

    • 谢谢。我删除了 Html.ValidationMessageFor,但我不想删除我的 javascript,因为我不会有我想要的红色边框。红色被添加到我的无效输入字段中,我的问题是当我的输入有效时我无法删除它们!
    • 但是你不需要任何javascript。当一个字段无效时,ASP.NET MVC 会自动将custom-validation-error 类添加到它。所以你所要做的就是编写相应的CSS规则,并在它周围加上一个红色的边框。
    【解决方案2】:

    好的,答案真的很简单..

    我刚刚添加了这条 CSS 规则:

    .custom-validation-error  
    {
       border: 1px solid red !important;
    }
    

    按照 Darin Dimitrov 的建议,删除了我的 javascript 代码并删除了 Html.ValidationMessageFor。

    该死的,该死的……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2014-11-03
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多