2017-11-17 17 views
1

私はRazorを初めて使用しているため、選択した値が機能しない理由がわかりません。@HTMLドロップダウンリストの選択値

@for (var i = 0; i < Model.TagActivities.Count; i++) 
{ 
    <tr> 
     @Html.HiddenFor(modelItem => Model.TagActivities[i].TAGActivityId, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.HiddenFor(modelItem => Model.TagActivities[i].CategoryId, new { htmlAttributes = new { @class = "form-control" 
     <td> 
      @Html.EditorFor(modelItem => Model.TagActivities[i].ActivityName, new { htmlAttributes = new { @class = "form-control" } }) 
     </td> 
     <td> 
      @Html.EditorFor(modelItem => Model.TagActivities[i].ActivityDescription, new { htmlAttributes = new { @class = "form-control" } }) 
     </td> 
     <td> 
      @Html.DropDownListFor(modelItem => Model.TagActivities[i].Category.CategoryName, new SelectList(listItems, "CategoryId", "CategoryName", Model.TagActivities[i].Category.CategoryName), new { @class = "form-control" }) 
     </td> 
     <td> 
      @Html.EditorFor(modelItem => Model.TagActivities[i].AlertMinutes, new { htmlAttributes = new { @class = "form-control" } }) 
     </td> 
     <td> 
      @Html.EditorFor(modelItem => Model.TagActivities[i].IsDefault) 
     </td> 
    </tr> 
} 

ヘルプで使用

var listItems = (List<Categories>)ViewBag.Categories;

してください。ありがとうございました。

+0

'listItems'はどのように見えますか? – James

+0

@James 2つの列( "CategoryId"、 "CategoryName")を含むリスト –

答えて

0

あなたが渡した選択値は、listItemsのオブジェクトでは同じ型ではないため、機能しません。可能な解決策たら、それはあなたが選択したオブジェクトのSelectListのコンストラクタに渡す値を変更するには、次のようになります。

new SelectList(listItems, "CategoryId", "CategoryName", Model.TagActivities[i].Category) 

listItemsはタイプCategoriesのオブジェクトのリストです。したがって、選択されたオブジェクトとして、このタイプのオブジェクトを渡す必要があります。