2012-05-28 51 views
3

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

类采购输入属性代码

[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> 

回答

1

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

0

虽然这是一种解决方法,但至少会引发某种验证。试试:

@Html.DropDownListFor(model => model.PurchaseInput.LedgerId, new SelectList(Model.Ledger, "Value", "Text"), new { @class = "required" })