ASP.NET MVC 2 - заполнить раскрывающийся список из словаря - PullRequest
0 голосов
/ 15 июня 2011

Я пытаюсь заполнить выпадающий список в MVC 2 из словаря {строка, строка}. Мой код ниже, это не совсем верно ...

говорится, словарь. Помощь

<tr>
<td class="formtext">
    <%: Html.LabelFor(m => m.State)%> <strong>*</strong>
</td>
<td align="left">
    <%= Html.DropDownList("statesDropDown", null, null, new { @class = "ddlAttributeGroups" })%>
</td>
</tr>

ActionResult:

var states = new States().GetStates();
var statesDropDown = new SelectList(states, states.Keys.ToString(), states.Values.ToString());
ViewData["statesDropDown"] = statesDropDown;

1 Ответ

1 голос
/ 15 июня 2011

Почему вы используете ViewData вместо моделей представления и строго типизированных представлений, которые сделают ваш код намного более понятным / более безопасным / с поддержкой Intellisense, ...? Почему вы используете словари вместо более простых типов? Как например вид модели:

public class MyViewModel
{
    public string SelectedState { get; set; }
    public IEnumerable<SelectListItem> States { get; set; }
}

и контроллер:

public ActionResult Foo()
{
    var states = new States().GetStates();
    var model = new MyViewModel
    {
        States = states.Select(x => new SelectListItem
        {
            Value = x.Key,
            Text = x.Value
        })
    };
    return View(model);
}

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

<%= Html.DropDownList(
    x => x.SelectedState, 
    new SelectList(Model.States, "Value", "Text"), 
    null, 
    new { @class = "ddlAttributeGroups" }
) %>

Видите, как это просто?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...