3

验证适用于其他输入类型的文本元素,但不适用于 DropDownListFor

类购买输入属性代码

[Required]
public string LedgerId { get; set; }

类视图模型代码

PurchaseViewModel purchaseVM = new PurchaseViewModel
{
    // PurchaseInput=purchaseInput,
    Ledger = uw.LedgerRepository.Get().Select(x => new SelectListItem { Value = x.Id.ToString(), Text = x.LedgerName }),
};

看法

<div class="column">
    <div  class="labelField">
        @Html.LabelFor(model => model.PurchaseInput.LedgerId, "Party")
    </div>   
    <div class="ItemField">
        @Html.DropDownListFor(model => model.PurchaseInput.LedgerId, new SelectList(Model.Ledger, "Value", "Text"))
        @Html.ValidationMessageFor(model => model.PurchaseInput.LedgerId)
    </div>
</div>
4

3 回答 3

1

从表面上看,您的选择列表中似乎没有空项目。仅当用户选择字符串长度为零的下拉项时才会触发验证。如果您检查 Html 源代码,您是否可以在下拉列表中看到验证属性(取决于您是否使用不显眼的验证)?

于 2012-05-28T09:20:21.960 回答
0

尽管这是一种解决方法,但至少它会触发某种验证。尝试:

@Html.DropDownListFor(model => model.PurchaseInput.LedgerId, new SelectList(Model.Ledger, "Value", "Text"), new { @class = "required" })
于 2012-12-18T20:28:22.270 回答
0

是的,DropDownListFor 的验证存在问题。看看这个链接。他们从元数据手动获取验证数据 - http://forums.asp.net/t/1649193.aspx

于 2012-05-28T09:55:02.693 回答