2016-11-24 23 views
0

私はmvcを使用しているC#プロジェクトに取り組んでいます。私はフォームを作成し、その中に私はドロップダウンを持っています。ドロップダウンフィールドは必須フィールドです(私のモデルで)。しかし、ドロップダウンから値を選択せず​​に[作成]ボタンをクリックしても、検証メッセージは表示されません(たとえモデルクラスに1つあります)。ここに私のモデルである:ここでは DropDownListForを使用した検証メッセージがありません

[Required(ErrorMessage = "This field is required.")] 
public int MappingType { get; set; } 

は、私の見解である:私はミスを犯すところ

@Html.DropDownListFor(m => m.id, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose") 
@Html.ValidationMessageFor(model => model.MappingType, "", new { @class = "text-danger" }) 

私にはわからない...

+2

あなたが示されているプロパティの名前は 'MappingType'が、ドロップダウンリストあなたは 'id'という名前のプロパティのgeneratibgです! (なぜ、 'SelectList'がすでに' ViewList.mappingTypes'から新しい 'SelectList'を作成しているのですか? –

+0

私のモデルに" id "プロパティを追加し、 @ Html.DropDownListFor(m => m.id、新しいSelectList(ViewBag.mappingTypes、 "Value"、 "Text")、 "Изберете") @ Html.ValidationMessageFor(model => model.id、 "、新しい{@class =" text-danger "}) – ppetyr

+0

または@Html.DropDownListFor(m => m.MappingType、(IEnumerable )ViewBag.mappingTypes、" Choose ") –

答えて

1

あなたが別のためのドロップダウンリストを生成しているため、これが起こっていますモデルのプロパティ。私。検証メッセージがMappingTypeの場合、idのドロップダウンリストを作成しています。それを動作させるには、コントロール(あなたの場合はドロップダウンリスト)と検証メッセージが同じプロパティのものでなければなりません。だから、あなたは以下のようにドロップダウンをバインドするためのViewDataを使用することができます

@Html.DropDownListFor(m => m.MappingType, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose") 
-1

に次の行

@Html.DropDownListFor(m => m.id, new SelectList(ViewBag.mappingTypes, "Value", "Text"), "Choose") 

を変更。

@Html.DropDownListFor(m => m.id,(SelectList)ViewData["mappingTypes"],"Choose") 

@ Html.ValidationMessageFor(モデル=> model.MappingType、 ""、新しい{@class = "テキスト-危険"})

+0

答える前に慎重に質問をお読みください。 – Zeeshan

関連する問題