Как выбрать элемент из списка DropDownListFor? (MVC3) - PullRequest
1 голос
/ 22 января 2012

Я заполняю раскрывающийся список с помощью этого кода (и он работает нормально):

@Html.DropDownListFor(x => x.SelectedCountry, new SelectList(Model.Countries, "Value", "Text"), "Please Select a Country")

Иногда это представление также получает данные о предварительно выбранной стране, поэтому я хочу выбрать эту страну.

Я пытался:

@Html.DropDownListFor(x => x.SelectedCountry, new SelectList(Model.Countries, "Value", "Text", "United States"), "Please Select a Country")

Но это не сработало. Я также попробовал ценность предмета, и не повезло.

Что я делаю не так?

Кроме того, есть ли способ получить доступ / изменить этот элемент после создания? (используя C # не javascript)

Спасибо!

1 Ответ

3 голосов
/ 22 января 2012

В списке Model.Countries есть 2 свойства: Text и Value. Поэтому, если вы хотите предварительно выбрать данный элемент в раскрывающемся списке, вы должны использовать значение:

@Html.DropDownListFor(
    x => x.SelectedCountry, 
    new SelectList(Model.Countries, "Value", "Text", "us"), 
    "Please Select a Country"
)

, что предполагает наличие в Model.Countries предмета с Value="us".

В качестве альтернативы вы можете сделать это внутри действия контроллера, возвращающего представление:

public ActionResult Foo()
{
    var model = new MyViewModel();
    model.Countries = new[]
    {
        new SelectListItem { Value = "fr", Text = "France" },
        new SelectListItem { Value = "uk", Text = "United Kingdom" },
        new SelectListItem { Value = "us", Text = "United States" },
    };
    model.SelectedCountry = "us";
    return View(model);
}

и в представлении вы можете просто:

@Html.DropDownListFor(
    x => x.SelectedCountry, 
    Model.Countries, 
    "Please Select a Country"
)

, который будет предварительно выбирать элемент с Value="us" (третий в моем примере).

...