【发布时间】:2014-12-18 06:02:07
【问题描述】:
我正在使用JaroslawWaliszko 的 ExpressiveAnnotations。当我通过ModelState.IsValid 检查服务器端时,它工作正常。但它没有显示客户端验证消息。我不知道缺少什么。我也添加了 jquery 文件。这是我申请RequiredIf的房产:
// When Role = Assistant Professor(which has id = 3),
// His/ Her head's Id should be selected as ParentID.
[RequiredIf("RoleID == 3", ErrorMessage = "Select Head.")]
public Nullable<int> ParentID { get; set; }
呈现的 HTML 如下:
<select class="form-control ng-pristine ng-valid"
data-val="true"
data-val-number="The field ParentID must be a number."
data-val-requiredif="Select Head."
data-val-requiredif-allowempty="false"
data-val-requiredif-constsmap="{}"
data-val-requiredif-expression="RoleID == 3"
data-val-requiredif-fieldsmap="{"RoleID":"numeric"}"
id="ParentID"
name="ParentID"
ng-model="DTO.ParentID"
ng-options="obj.Value as obj.Text for obj in headList">
<option selected="selected" value="" class="">--select--</option>
<option value="0">Mr. Kevin Thomas</option>
<option value="1">Ms. Lisa Brown</option>
<option value="2">Mr. Sail Kapoor</option>
</select>
我已经实现的东西:
- 安装包:Install-Package ExpressiveAnnotations,
-
在Global.asax
中添加了以下代码DataAnnotationsModelValidatorProvider.RegisterAdapter( typeof (RequiredIfAttribute), typeof (RequiredIfValidator)); DataAnnotationsModelValidatorProvider.RegisterAdapter( typeof (AssertThatAttribute), typeof (AssertThatValidator)); 在 jquery 验证文件下方的 bundle 中添加了 expressive.annotations.validate.js,并在指定页面添加了 bundle。
【问题讨论】:
-
您的
@HtmlValidationMessageFor(m => m.ParentID)被收录了吗?第一个选项看起来也有问题 - 您是手动创建的吗? -
@StephenMuecke 是的,我有。
-
有什么理由不使用
@Html.DropDownListFor(m => m.ParentID)? -
@StephenMuecke 它将有治疗员工的名单。如果您正在注册较低级别的新员工,则必须从该选项中选择。
-
抱歉,不明白 - 这与不使用 html 帮助器有什么关系?
标签: c# jquery asp.net-mvc data-annotations