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实现。
答
我建议你使用视图模型。保留不允许在其程序集中更改的域模型。然后,让您的控制器将视图模型从/向视图传递/传递。这些视图模型是您为给定视图的需求特别定义的类。然后视图模型属性可以用任何你需要的验证数据注释来装饰。
然后在您的视图中使用标准和强类型帮助程序,如Html.TextBoxFor
和Html.ValidationMessageFor
,并且不要在某些帮助程序中重新发明轮子。
通过对客户端验证的方式来工作,你需要在的顺序至少有以下3个引用:
jquery
jquery.validate
jquery.validate.unobtrusive
你启用在web.config中进行验证(在AppSettings下设置“ClientValidationEnabled”和“UnobtrusiveJavaScriptEnabled”为true),或者通过代码使用与'HtmlHelper'上的静态属性相同的关键字? –
是的。对不起,也没有添加: appSettings> –