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 に答える