9

だから私は次の(擬似コード)を持っています:

string selectedvalud = "C";
List<SelectListItem> list= new List<SelectListItem>();
foreach(var item in mymodelinstance.Codes){
  list.Add(new SelectListItem { Text = item.Name, Value = item.Id.Tostring(), Selected = item.Id.ToString() == selectedvalue ? true : false });
}

ViewBag.ListOfCodes = list;

私の見解では:

<%: Html.DropDownList("Codes", (List<SelectListItem>)ViewBag.ListOfCodes , new { style = "max-width: 600px;" })%>

これで、ビューに到達する前に、「リスト」にアイテムが入力され、すでに選択されているアイテムにマークが付けられました。ただし、ビューに到達すると、どのオプションも選択済みとしてマークされません。

私の質問は、ビューバッグを使用してアイテムを渡すことは可能ですか、それとも別の媒体を使用する必要がありますか?そのように使用すると、オプションで選択されたフラグが削除されるためです。

4

1 に答える 1

22

このようにしてみてください:

ViewBag.ListOfCodes = new SelectList(mymodelinstance.Codes, "Id", "Name");
ViewBag.Codes = "C";

そしてあなたの見解では:

<%= Html.DropDownList(
    "Codes", 
    (IEnumerable<SelectListItem>)ViewBag.ListOfCodes, 
    new { style = "max-width: 600px;" }
) %>

これを機能させるには、コレクション内にId="C"のアイテムが必要です。

    ViewBag.ListOfCodes = new SelectList(new[]
    {
        new { Id = "A", Name = "Code A" },
        new { Id = "B", Name = "Code B" },
        new { Id = "C", Name = "Code C" },
    }, "Id", "Name");
于 2012-08-24T15:45:08.323 に答える