验证正在处理其他输入类型的文本元素,但不能处理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>
答案 0 :(得分:1)
从表面上看,您的选择列表中似乎没有空白项目。仅当用户选择字符串长度为零的下拉项时,才会触发验证。如果您检查Html源代码,您是否可以在下拉列表中看到验证属性(取决于您是否使用不引人注目的验证)?
答案 1 :(得分:0)
是的,DropDownListFor的验证存在问题。看看这个链接。他们从元数据手动获取验证数据 - http://forums.asp.net/t/1649193.aspx
答案 2 :(得分:0)
虽然这是一种解决方法,但至少它会触发某种验证。尝试:
@Html.DropDownListFor(model => model.PurchaseInput.LedgerId, new SelectList(Model.Ledger, "Value", "Text"), new { @class = "required" })