且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ASP.NET MVC 中的***实践 ViewModel 验证

更新时间:2023-02-16 10:45:50

首先回答你的第三个问题:不,没有比你正在做的更简单的方法了.两行代码让它工作起来再简单不过了.尽管您可以使用一个插件,如问题中所述不显眼的验证不适用于动态内容

你的第一个问题,如何集中验证,我通常使用一个单独的类文件来存储我所有的验证规则.这样我就不必浏览每个类文件来查找规则,而是将它们全部放在一个地方.如果那更好,那就是选择问题.我开始使用它的主要原因是能够为自动生成的类添加验证,比如来自实体框架的类.

所以我的数据层中有一个名为 ModelValidation.cs 的文件,并且有我所有模型的代码,例如

///////<see cref="Test"/> 的验证规则目的///</总结>//////2015-01-26:创建///</备注>[元数据类型(typeof(TestValidation))]公共部分类测试{}公共类测试验证{///<summary>名称是必需的</summary>[必需的][字符串长度(100)]公共字符串名称 { 获取;放;}///<summary>文本是多行的</summary>[数据类型(DataType.MultilineText)][允许HTML]公共字符串文本 { 获取;放;}}

现在你注意到我没有提供实际的错误信息.我使用 Haacked 的约定 添加消息.可以轻松添加本地化验证规则.

它基本上归结为一个包含以下内容的资源文件:

Test_Name = "提供名称"Test_Name_Required = "名称是必需的"

当你调用像

这样的常规MVC视图代码时,将使用这些消息和命名
<div class="editor-label">@Html.LabelFor(model => model.Name)

<div class="editor-field">@Html.EditorFor(model => model.Name)@Html.ValidationMessageFor(model => model.Name)