2

モデルを介してビューにオブジェクトのリストを渡しています

@model MyModel.ObjectViewModel

私は MVC を初めて使用dropdownlistし、ビューで最初に選択された a の項目を設定しようとしています ( Edit をモデルにしています)。

次に、これを次のようにドロップダウンリストにバインドしています

<label for="ddlObjects">Select Object</label>
@Html.DropDownList("ddlObjects", Model.AllObjectsSelectList, Model.Object.ObjectName)

上記により、ドロップダウンリストに最初に選択された正しいオブジェクトが表示されますが、テキストの形式のみであることがわかりました。実際のオブジェクトは選択されないため、値は使用されません。"Object1" "Object2"などのアイテムのリストを作成し、デフォルトを特定 のリストにするにはどうすればよいですか?

アイテムを通過するとき、アイテムのテキスト値 (ドロップダウン リストに表示される名前) しかわかりません。それが内部値であることを知らないため、実際には使用できません。SelectListItem {Text = "X", Value= "Y"}

こことグーグルで検索しましたが、最初に選択した値を設定するオプションがありますが@Html.DropDownList、コントロール名を指定できないように見えるメソッドを使用しており、コントローラーでコントロール。

4

1 に答える 1

2

私の回避策はきれいではありませんでしたが、簡単にリファクタリングしてはるかに優れたものにすることができました。それは、現時点では時間がない努力の結果にすぎませんが、来週かそこらで行う予定です。

コントローラーでメソッドを作成し、それをアイテムのリストに渡します (selectList、とにかく機能すると思いますが、機能しません)。次に、必要なオブジェクトを特定し、Selected プロパティをに設定します。真実。

private List<SelectListItem> GetListOfObjectTypes(SelectList selectList, string objectTypeName, string objectTypeId)
{
    List<SelectListItem> items = new List<SelectListItem>();
    foreach (METAObjectType item in selectList.Items)
    {
         bool isSelected = false;
         if (item.Name == objectTypeName)
         {
                isSelected = true;
         }
         items.Add(new SelectListItem {Selected= isSelected, Text=item.Name, Value=item.ObjectTypeId.ToString()});
        }
        return items;
    }

次に、これをビューに渡し、@Html.DropDownList のリストとして設定すると、デフォルトで正しい項目が選択されるようになります。

于 2013-08-15T10:03:05.007 に答える