Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
603 views
in Technique[技术] by (71.8m points)

asp.net mvc - Selected value for dropdownlistfor in mvc4

I have created a ViewBag selectlist in Edit action and set the value to be selected as:

ViewBag.Doors = new SelectList(
    new[]
    {
        new {ID = 1, Name="1-Door"},
        new {ID = 2, Name="2-Doors"},
        new {ID = 3, Name="3-Doors"},
        new {ID = 4, Name="4-Doors"},
        new {ID = 5, Name="5-Doors"},
        new {ID = 6, Name="6-Doors"},
        new {ID = 7, Name="7-Doors"}
    },
    "ID", "Name", advert.Doors);

But in the view the value for the dropdown is not selected by default.

My view code is:

@Html.DropDownListFor(model => model.Doors, (SelectList)ViewBag.Doors, "--Select--")
@Html.ValidationMessageFor(model => model.Doors)

The property Doors will be numeric 1,2,3,..

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

How will I do it using Annonymous type in ViewBag ?

Overload

enter image description here

Controller Action Method

public ActionResult DropDownListFor()
{
    ViewBag.Doors = new SelectList(
                        new[]
                        {
                            new {Value = 1,Text="1-Door"},
                            new {Value = 2,Text="2-Door"},
                            new {Value = 3,Text="4-Door"},
                            new {Value = 4,Text="4-Door"},
                            new {Value = 5,Text="5-Door"},
                            new {Value = 6,Text="6-Door"},
                            new {Value = 7,Text="7-Doors"}
                        }, "Value", "Text", 7);
    return View();
}

View

@Html.DropDownList("Doors")






How will I do it using SelectListItem?

Action Method

[HttpGet]
public ActionResult DropDownListFor()
{
    List<SelectListItem> items = new List<SelectListItem>();

    items.Add(new SelectListItem { Text = "Action", Value = "0" });
    items.Add(new SelectListItem { Text = "Drama", Value = "1" });
    items.Add(new SelectListItem { Text = "Comedy", Value = "2", 
                                                             Selected = true });
    items.Add(new SelectListItem { Text = "Science Fiction", Value = "3" });
    ViewBag.MovieType = items;

    return View();
}

View

@using (Html.BeginForm("Action", "Controller", FormMethod.Post))
{
    @Html.DropDownList("MovieType")
}






How will I do it using View Model?

View

@using (Html.BeginForm("Action", "Controller", FormMethod.Post))
{
    @Html.DropDownListFor(m => m.Id, Model.DDLList, "Please select");
}

Action Method

[HttpGet]
public ActionResult DropDownListFor()
{
    return View(new Models.Dropdown());
}

View Model

public class Dropdown
{
    public string Id { get; set; }
    public List<SelectListItem> DDLList
    {
        get
        {
            return new List<SelectListItem>() 
            { 
                new SelectListItem
                { 
                    Text = "1-Door", 
                    Value = "1", 
                    Selected = true
                },
                new SelectListItem
                { 
                    Selected = false, 
                    Value = "2", 
                    Text = "2-Door"
                }
            };
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...