2

これはコードです:

@using SSA.Models;

<h2>@ViewBag.Title.ToString()</h2>

@{
    using(Html.BeginForm()){
        List<SelectListItem> selectList = new List<SelectListItem>();
        foreach(Item c in ViewBag.Items)
        {
            SelectListItem i = new SelectListItem();
            i.Text = c.Name.ToString();
            i.Value = c.SiteID.ToString();
            selectList.Add(new SelectListItem());
        }
        Html.DropDownList("Casinos", new SelectList(selectList,"Value","Text"));
    }
}

ブレークポイントのリスト selectList は、108 個の値があることを示しています。レンダリングされるのは空のフォームです。実行時エラーはありません。

注: これに ViewBag を使用するのが最善の方法ではないことはわかっています。これは使い捨てのコードであり、ドロップダウンがレンダリングされない理由を理解したいと思います。

4

2 に答える 2

6

すべてがかみそりコード ブロック (つまり@{ ... }) 内にあるため、レンダリングされません。これを試して:

@{
    List<SelectListItem> selectList = new List<SelectListItem>();
    foreach(Item c in ViewBag.Items)
    {
        SelectListItem i = new SelectListItem();
        i.Text = c.Name.ToString();
        i.Value = c.SiteID.ToString();
        selectList.Add(new SelectListItem());
    }
}

@using (Html.BeginForm())
{
    @Html.DropDownList("Casinos", new SelectList(selectList,"Value","Text"));
}

以下は、カミソリ構文のクイック リファレンスです。また、これは使い捨てのコードだとおっしゃいましたが、念のため、view[1] models[2]の使用について言及します。必要に応じて、簡単な例を提供できます。

于 2013-11-14T19:02:56.220 に答える
1
@{
   IEnumerable<MyItemType> CDrop = ViewBag.Cat;


        List<SelectListItem> selectList = new List<SelectListItem>();
        foreach (var c in CDrop)
        {
            SelectListItem i = new SelectListItem();
            i.Text = c.Decsription.ToString();
            i.Value = c.TypeID.ToString();
            selectList.Add(i);
        }

}

}

    then some where in your view. 

    @Html.DropDownList("name", new SelectList(selectList, "Value","Text"));
于 2015-07-18T16:47:50.477 に答える