ASP.NET MVC Получить идентификатор (значение) из DropDownListFor - PullRequest
0 голосов
/ 01 марта 2011

У меня есть серия DropDown, которые я хочу добавить и отредактировать. Я нашел вспомогательное расширение от StackOverflow для создания ссылки на изображение действия.

  @Html.DropDownListFor(model => model.Entry.ParadigmId, ((IEnumerable<Pylon.Models.Paradigm>)ViewBag.PossibleParadigms).Select(option => new SelectListItem {
            Text = (option == null ? "None" : option.Name), 
            Value = option.ParadigmId.ToString(),
            Selected = (Model != null) && (option.ParadigmId == Model.Entry.ParadigmId)
        }), "Select")

@Html.ActionImage("ParadigmEdit", new { id = ? }, "~/Content/Images/Edit_Icon.gif", "ParadigmEdit")  

Я не уверен, как ссылаться на выбранное значение идентификатора в DropDownList, где знак вопроса находится в приведенном выше коде.

1 Ответ

1 голос
/ 01 марта 2011

Нельзя ссылаться на выбранное значение из раскрывающегося списка, используя код на стороне сервера (который представляют собой HTML-помощники), поскольку выбор выполняется пользователем на стороне клиента. Ваша проблема связана с тем, что вы пытаетесь создать привязку, которая должна отправлять значение, известное только клиенту. Вы можете сделать это только с помощью JavaScript. Или другой вариант - просто использовать форму с кнопкой отправки изображения:

@using (Html.BeginForm("ParadigmEdit", "ControllerName"))
{
    @Html.DropDownListFor(
        model => model.Entry.ParadigmId,
        // WARNING: this code definetely does not belong to a view
        ((IEnumerable<Pylon.Models.Paradigm>)ViewBag.PossibleParadigms).Select(option => new SelectListItem {
            Text = (option == null ? "None" : option.Name), 
            Value = option.ParadigmId.ToString(),
            Selected = (Model != null) && (option.ParadigmId == Model.Entry.ParadigmId)
        }), 
        "Select"
    )
    <input type="image" alt="ParadigmEdit" src="@Url.Content("~/Content/Images/Edit_Icon.gif")" />
}

и, конечно, после того, как вы переместите некрасивый код туда, где он принадлежит (слой отображения или модель представления), ваш код станет:

@using (Html.BeginForm("ParadigmEdit", "ControllerName"))
{
    @Html.DropDownListFor(
        model => model.Entry.ParadigmId,
        Model.ParadigmValues,
        "Select"
    )
    <input type="image" alt="ParadigmEdit" src="@Url.Content("~/Content/Images/Edit_Icon.gif")" />
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...