142

ASP.NET MVC 2では、静的オプションを提供する非常に単純なドロップダウンリストを作成したいと思います。たとえば、「赤」、「青」、「緑」のいずれかを選択したいと思います。

4

7 に答える 7

194

このMSDNの記事とStackOverflowの使用例を参照してください。

次のLinq/POCOクラスがあるとします。

public class Color
{
    public int ColorId { get; set; }
    public string Name { get; set; }
}

そして、あなたが次のモデルを持っているとしましょう:

public class PageModel 
{
   public int MyColorId { get; set; }
}

そして最後に、次の色のリストがあるとしましょう。それらは、Linqクエリ、静的リストなどから取得できます。

public static IEnumerable<Color> Colors = new List<Color> { 
    new Color {
        ColorId = 1,
        Name = "Red"
    },
    new Color {
        ColorId = 2,
        Name = "Blue"
    }
};

ビューでは、次のようなドロップダウンリストを作成できます。

<%= Html.DropDownListFor(n => n.MyColorId, 
                         new SelectList(Colors, "ColorId", "Name")) %>
于 2010-06-16T23:35:44.957 に答える
67
<%: 
     Html.DropDownListFor(
           model => model.Color, 
           new SelectList(
                  new List<Object>{ 
                       new { value = 0 , text = "Red"  },
                       new { value = 1 , text = "Blue" },
                       new { value = 2 , text = "Green"}
                    },
                  "value",
                  "text",
                   Model.Color
           )
        )
%>

または、クラスを記述せず、このようなものをビューに直接配置することもできます。

于 2010-10-03T03:59:04.530 に答える
38

モデル内の辞書から始めることにより、多くの太った運指を避けます

namespace EzPL8.Models
{
    public class MyEggs
    {
        public Dictionary<int, string> Egg { get; set; }

        public MyEggs()
        {
            Egg = new Dictionary<int, string>()
            {
                { 0, "No Preference"},
                { 1, "I hate eggs"},
                { 2, "Over Easy"},
                { 3, "Sunny Side Up"},
                { 4, "Scrambled"},
                { 5, "Hard Boiled"},
                { 6, "Eggs Benedict"}
            };

    }


    }

ビューで、表示用のリストに変換します

@Html.DropDownListFor(m => m.Egg.Keys,
                         new SelectList(
                             Model.Egg, 
                             "Key", 
                             "Value"))
于 2012-05-01T02:53:10.500 に答える
33

こんにちはここに私が1つのプロジェクトでそれをした方法があります:

     @Html.DropDownListFor(model => model.MyOption,                
                  new List<SelectListItem> { 
                       new SelectListItem { Value = "0" , Text = "Option A" },
                       new SelectListItem { Value = "1" , Text = "Option B" },
                       new SelectListItem { Value = "2" , Text = "Option C" }
                    },
                  new { @class="myselect"})

それが誰かに役立つことを願っています。ありがとう

于 2014-03-14T15:00:10.110 に答える
12

または、データベースコンテキストからのものである場合は、

@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))
于 2014-05-10T19:53:20.377 に答える
7

「1つ選んでください」と

@Html.DropDownListFor(model => model.ContentManagement_Send_Section,
  new List<SelectListItem> { new SelectListItem { Value = "0", Text = "Plese Select one Item" } }
    .Concat(db.NameOfPaperSections.Select(x => new SelectListItem { Text = x.NameOfPaperSection, Value = x.PaperSectionID.ToString() })),
  new { @class = "myselect" })  

コードから派生:マスタープログラマー&& Joel Wahlund ;
キングリファレンス:https : //stackoverflow.com/a/1528193/1395101 JaredPar ;

ありがとうマスタープログラマー&& JoelWahlund && JaredPar ;

幸運の友達。

于 2014-06-08T22:44:31.290 に答える
4
@using (Html.BeginForm()) {
    <p>Do you like pizza?
        @Html.DropDownListFor(x => x.likesPizza, new[] {
            new SelectListItem() {Text = "Yes", Value = bool.TrueString},
            new SelectListItem() {Text = "No", Value = bool.FalseString}
        }, "Choose an option") 
    </p>
    <input type = "submit" value = "Submit my answer" />
} 

この答えは、DropDownListのすべてのコードをビューに直接配置するという点で、Beratの答えと似ていると思います。しかし、これはay / n(ブール)ドロップダウンリストを作成する効率的な方法だと思うので、それを共有したいと思いました。

初心者向けの注意事項:

  • 'x'の名前について心配する必要はありません。ここで初めて作成され、MVCアプリ内の他の場所にはリンクされないため、好きな名前を付けることができます-'x'、 「モデル」、「m」など。
  • ドロップダウンリストに表示されるプレースホルダーは[オプションを選択]なので、必要に応じて変更できます。
  • ドロップダウンの前に、「ピザは好きですか?」というテキストが少しあります。
  • これは、送信ボタンを含むフォームの完全なテキストである必要があります。

これが誰かに役立つことを願っています、

于 2018-09-16T15:19:46.270 に答える