2017-12-06 3 views
3

を返すこれは、このリストをデータベースから完全に取り込まれる図ドロップダウンリストの値は、常にasp.netのMVCにおけるゼロ

<div class="col-md-10"> 
    @Html.DropDownListFor(m => m.RoleList, new SelectList(Model.RoleList,"ID", "RoleName","1"), "Please Choose a Department", new { htmlAttributes = new { @class = "form-control"} }) 
    @Html.ValidationMessageFor(model => model.SelectedValue, "",new { @class = "text-danger"}) 
</div> 

あるモデルクラスのサンプル

[Required(ErrorMessage = "Department is required")] 
[Display(Name = "Department")] 
public int SelectedValue { get; set; } 


[Required(ErrorMessage = "Department is required")] 
[Display(Name = "Department")] 
public List<Department> RoleList { get; set; } 

あります。私は、リスト上の項目を選択すると、今、選択した値は、コントローラに送信する必要があり、私は選択

enter image description here

エラーをした。ここ

public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    int Selectedvalue = model.SelectedValue; 
    if (ModelState.IsValid && (model.SelectedValue).ToString() != "0") 
    { 

enter image description here

+1

エラーが表示されません。 –

+0

@MattSpinks、解決済み –

答えて

3

変更する必要があります

@Html.DropDownListFor(m => m.RoleList, new SelectList(Model.RoleList,"ID", "RoleName","1"), "Please Choose a Department", new { htmlAttributes = new { @class = "form-control"} }) 

@Html.DropDownListFor(m => m.SelectedValue, new SelectList(Model.RoleList,"ID", "RoleName","1"), "Please Choose a Department", new { htmlAttributes = new { @class = "form-control"} }) 

DropDownListForの最初のパラメータは、モデルの値を選択すべきです。あなたの場合、このプロパティはModel.SelectedValueではなく、Model.RoleListです。

+0

さらに、そのプロパティを表示しているため、SelectedValueのプロパティを表示しているため、サーバーとDisplay属性にPOSTされていないため、RoleListからRequired属性を削除できます – Fran

関連する問題