2

我是 MVC3 的新手。例如,我在自定义验证中遇到问题

在我的 BasicInfoViewModel.cs 中,

[Required]
    [Display(Name = "State", ResourceType = typeof(Resources.Global))]
    public string State { get; set; }

    [Display(Name = "City", ResourceType = typeof(Resources.Global))]
    public string City { get; set; }

在我的 BasicDetailsView.cshtml 中,

<label>
<span class="td">@Application.Resources.Global.State</span>
 @Html.DropDownListFor(m => m.State, (List<SelectListItem>)ViewData["State"])
</label>
<label>
<span class="td">@Application.Resources.Global.City</span>
@Html.DropDownListFor(m => m.City, (List<SelectListItem>)ViewData["City"])
</label>

如果state属性返回true,则只需要“City”。如果不是,则不需要城市,则应禁用文本框。我没有使用EditorFor,而是使用DropDownListFor因为我使用的是纯 html。谁能帮我解决这个问题?谢谢...

4

2 回答 2

3

MVC Foolproof是一组验证数据注释,可扩展现有注释并提供附加功能。例如[RequiredIfNotEmpty],这个包中的属性非常适合您的场景,因为它允许条件验证。

[Display(Name = "State", ResourceType = typeof(Resources.Global))]
public string State { get; set; }

[RequiredIfNotEmpty("State")]
[Display(Name = "City", ResourceType = typeof(Resources.Global))]
public string City { get; set; }

现在 State 属性是可选的。但如果它有一些价值,则需要 City 属性。

于 2012-12-29T11:04:29.587 回答
0

您可能想查看RequiredIfAttribute。要禁用您的城市下拉列表 - 使用 jquery。为了检查数据是否有效,你有 js 方法 $("selector") .valid()它返回 0 或 1 并且还显示指定字段的验证消息

于 2012-12-29T11:07:52.573 回答