Hoe schrijf je een eenvoudige Html.DropDownListFor()?

In ASP.NET MVC 2 zou ik een heel eenvoudige vervolgkeuzelijst willen schrijven die statische opties geeft. Ik wil bijvoorbeeld keuzes bieden tussen “Rood”, “Blauw” en “Groen”.


Antwoord 1, autoriteit 100%

Zie dit MSDN-artikelen een voorbeeld gebruik hier op Stack Overflow.

Stel dat je de volgende Linq/POCO-klasse hebt:

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

En laten we zeggen dat je het volgende model hebt:

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

En tot slot, laten we zeggen dat je de volgende lijst met kleuren hebt. Ze kunnen afkomstig zijn van een Linq-query, van een statische lijst, enz.:

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

Naar jouw mening kun je een vervolgkeuzelijst als volgt maken:

<%= Html.DropDownListFor(n => n.MyColorId, 
                         new SelectList(Colors, "ColorId", "Name")) %>

Antwoord 2, autoriteit 34%

<%: 
     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
           )
        )
%>

of je kunt geen lessen schrijven, plaats zoiets rechtstreeks in de weergave.


Antwoord 3, autoriteit 20%

Vermijd veel vette vingerzettingen door te beginnen met een woordenboek in het model

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"}
            };
    }
    }

Converteer het in de weergave naar een lijst voor weergave

@Html.DropDownListFor(m => m.Egg.Keys,
                         new SelectList(
                             Model.Egg, 
                             "Key", 
                             "Value"))

Antwoord 4, autoriteit 17%

Hallo, hier is hoe ik het deed in één project:

    @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"})

Ik hoop dat het iemand helpt. Bedankt


Antwoord 5, autoriteit 6%

Of als het uit een databasecontext komt, kunt u

. gebruiken

@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))

Antwoord 6, autoriteit 4%

Met “Selecteer één item”

@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" })  

Afgeleid van de codes: Master Programmer&& Joel Wahlund;
King-referentie: https://stackoverflow.com/a/1528193/1395101JaredPar;

Bedankt Master Programmeur&& Joel Wahlund&& JaredPar;

Veel succes vrienden.


Antwoord 7, autoriteit 2%

@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" />
} 

Ik denk dat dit antwoord vergelijkbaar is met dat van Berat, in die zin dat je alle code voor je DropDownList direct in de weergave plaatst. Maar ik denk dat dit een efficiënte manier is om een ​​y/n (boolean) vervolgkeuzelijst te maken, dus ik wilde het delen.

Enkele opmerkingen voor beginners:

  • Maak je geen zorgen over hoe ‘x’ wordt genoemd – het is hier gemaakt, voor de
    eerste keer, en linkt niet naar iets anders ergens anders in de
    MVC-app, dus je kunt het noemen zoals je wilt – ‘x’, ‘model’, ‘m’ etc.
  • De tijdelijke aanduiding die gebruikers in de vervolgkeuzelijst zien, is ‘Kies een optie’, dus u kunt dit desgewenst wijzigen.
  • Er staat een stukje tekst vóór de vervolgkeuzelijst met de tekst “Houd je van pizza?”
  • Dit moet een volledige tekst zijn voor een formulier, inclusief een verzendknop, denk ik

Ik hoop dat dit iemand helpt,

Other episodes