0

私は今この問題に悩まされており、オンラインで何かを見つけることができません。Asp.Net MVC 5 Html.DropDownListが検証されていません

私はエディタテンプレートにHtml.DropDownListを持っています。私は自分のフォームでそのテンプレートを使用し、ドロップダウンリストには何も選択しないでください。送信をクリックすると、必要なドロップダウンリストに値が選択されていないことを通知するフォームが表示されますが、表示されません。私は間違って何をしていますか?ここで

public class RequestCreateViewModel 
{ 
    public int ID { get; set; } 

    public TesterLocationCreateViewModel TesterLocationCreateViewModel { get; set; } 

    .... 

    public RequestCreateViewModel() 
    { 

    } 
} 

public class TesterLocationCreateViewModel 
{ 
    public int ID { get; set; } 

    [Required] 
    [UIHint("OEM")] 
    public string OEM { get; set; } 

    [Required] 
    [DisplayName("City")] 
    public string LocationCity { get; set; } 


    public TesterLocationCreateViewModel() 
    { 

    } 
} 

はここTesterLocationCreateViewModel.cshtml(編集テンプレート)ですCreate.cshtml

@model WdcTesterManager.Models.Request 

@{ 
    ViewBag.Title = "Create Request"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Create Request</h2> 

@using (Html.BeginForm()) 
{ 
     @Html.AntiForgeryToken() 
     <div class="form-horizontal"> 
      @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
      <div class="form-group"> 
       @Html.EditorFor(model => model.TesterLocationCreateViewModel) 
      </div> 
     </div> 
} 

の抜粋です:

@model WdcTesterManager.Models.TesterLocationCreateViewModel 

    <div class="col-md-6"> 
     <h4>Tester Location</h4> 
     <div class="container-fluid"> 
      <div class="form-group"> 
       @Html.LabelFor(model => model.OEM, htmlAttributes: new { @class = "control-label col-md-4" }) 
       <div class="col-md-8"> 
        @Html.DropDownList("OEM", (SelectList)ViewBag.OemList, "Choose one", new { @class = "form-control" }) 
        @Html.ValidationMessageFor(model => model.OEM, "", new { @class = "text-danger" }) 
       </div> 
      </div>    
      <div class="form-group"> 
       @Html.LabelFor(model => model.LocationCity, htmlAttributes: new { @class = "control-label col-md-4" }) 
       <div class="col-md-8"> 
        @Html.EditorFor(model => model.LocationCity, new { htmlAttributes = new { @class = "form-control" } }) 
        @Html.ValidationMessageFor(model => model.LocationCity, "", new { @class = "text-danger" }) 
       </div> 
      </div>    
     </div> 
    </div> 

ここ

は、ビューモデルです私は何も記入せずに書類を提出する、私は市のための検証エラーを得るが、何もないOEM。何か案は?

enter image description here

+0

は、あなたが 'TesterLocationCreateViewModel'を使用して表示か?この場合、 '[Required]'属性も必要になります。 –

+0

ええ、それはそのビューモデルを使用しています。私はちょうど[必須]を追加しましたが、助けにはなりませんでした:/ – AndeeC

+0

うーん、 '[UIHint]'なしでビューモデルを使用している場合、 'EditorFor()'は決してドロップダウンリストを生成しないので、 –

答えて

1

@StephenMueckeは、コードが要求モデルではなく、要求ビューモデルを参照しているように見えたので、何かが、コードと間違って見えたことを指摘しました。

私はコードをもう一度見て、Create.cshtmlがRequestCreateViewModelではなくRequestモデルを使用していたことに気付きました。

私はRequestCreateViewModelを使用するCreate.cshtmlを変更した後、正しい検証エラーを取得しています:

@model WdcTesterManager.Models.RequestCreateViewModel 
関連する問題