DropDownList asp.net mvc 3 проблемы - PullRequest
0 голосов
/ 09 марта 2012

i Показать данные в DropDownList: (im usign datacontext)

Контроллер:

var query = newdb.Incident.Select (c => new {c.ID, c.Название });ViewBag.items = new SelectList (query.AsEnumerable (), "ID", "Name");

View:

@Html.DropDownList ("items", (SelectList) ViewBag.items, "- Select a Incident -")

Проблема:

Я хочу знать, как я могу выбрать элемент из списка DropDown и отправить параметр обратно контроллеру элементавыбран, потому что я пробую это и не работаю:

@ с использованием (Html.BeginForm ("er", "er", FormMethod.Post, new {id = 4})) {

@ Html.DropDownList ("items", (SelectList) ViewBag.items, "--Выбрать инцидент -")}

Я надеюсь, что кто-то может помочь. Смех

1 Ответ

1 голос
/ 09 марта 2012

Вы можете передать выбранное значение в качестве 4-го аргумента конструктора SelectList:

var query = newdb.Incident.Select(c => new { c.ID, c.Name }); 
ViewBag.items = new SelectList(query.AsEnumerable(), "ID", "Name", "4");

, а также, по вашему мнению, убедиться, что вы используете другое значение в качестве первого аргумента для помощника DropDownList, потому что прямо сейчасвы используете "items", что неверно, поскольку первый аргумент представляет имя сгенерированного выпадающего списка, который будет использоваться обратно в контроллере для получения выбранного значения:

@Html.DropDownList(
    "selectedIncidentId", 
    (SelectList) ViewBag.items, 
    "--Select a Incident--"
)

Также я бы порекомендовал вам использоватьпросмотр моделей и строго типизированной версии помощника DropDownListFor:

public class IncidentsViewModel
{
    public int? SelectedIncidentId { get; set; }
    public IEnumerable<SelectListItem> Incidents { get; set; }
}

, а затем:

public ActionResult Foo()
{
    var incidents = newdb.Incident.ToList().Select(c => new SelectListItem
    { 
        Value = c.ID.ToString(), 
        Text = c.Name 
    }); 
    var model = new IncidentsViewModel
    {
        SelectedIncidentId = 4, // preselect an incident with id = 4
        Incidents = incidents
    }
    return View(model);
}

и в строго типизированном представлении:

@model IncidentsViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        x => x.SelectedIncidentId, 
        Model.Incidents, 
        "--Select a Incident--"
    )

    <button type="submit">OK</button>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...