MVC 3自定义验证

问题描述:

我正在开发一个MVC 3应用程序,它需要某些点来自用户的一些数据。数据然后发送到一个外部DLL(我不允许改变它)。传递是通过将一个对象传递给一个函数来完成的,这样对象就可以成为我的模型。MVC 3自定义验证

问题是我没有权限将属性添加到模型,我也不知道要添加元数据类。

我决定使用JQuery使用自定义的验证机制,所以我做了辅助功能是这样的:

@helper TextBox(string name, object value = null) 
    { 
     var val = value ?? ""; 
    <tr> 
     <td class="label">@name : 
     </td> 
     <td> 
      <input type="text" name="@name" id="@name" value="@val" /> 
     </td> 
    </tr> 
} 

@helper ValidationMessage(string name) 
    {<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="@name"></span>} 

@helper TextBoxRequired(string text, string fildName, object value = null, string message = "*") 
    { 
     var val = value ?? ""; 
    <tr> 
     <td class="label">@text :</td> 
     <td> 
      <input type="text" name="@fildName" id="@fildName" value="@val" data-val="true" data-val-required="@message" /> 
      @ValidationMessage(fildName)</td> 
    </tr> 
} 

我已经包括jQuery的1.8.2,jquery.validate和jquery.validate.unobtrusive但它不管用。

任何帮助表示赞赏。

编辑: web配置设置:

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

而且我使用的是Firefox,Chrome和IE测试用JavaScript实现。

+0

你启用在web.config中进行验证(在AppSettings下设置“ClientValidationEnabled”和“UnobtrusiveJavaScriptEnabled”为true),或者通过代码使用与'HtmlHelper'上的静态属性相同的关键字? –

+0

是的。对不起,也没有添加: appSettings> –

我建议你使用视图模型。保留不允许在其程序集中更改的域模型。然后,让您的控制器将视图模型从/向视图传递/传递。这些视图模型是您为给定视图的需求特别定义的类。然后视图模型属性可以用任何你需要的验证数据注释来装饰。

然后在您的视图中使用标准和强类型帮助程序,如Html.TextBoxForHtml.ValidationMessageFor,并且不要在某些帮助程序中重新发明轮子。

通过对客户端验证的方式来工作,你需要在的顺序至少有以下3个引用:

  1. jquery
  2. jquery.validate
  3. jquery.validate.unobtrusive