используя Html.DropDownListFor <> в asp.net mvc 2 - PullRequest
0 голосов
/ 22 марта 2011

У меня есть следующие данные в контроллере

private void GetCountryLists(string value)
    {
        List<country> countries = new List<country>();
        country _country = new country() { countryname = "Select a country", value = "0" };
        country _country1 = new country() { countryname = "India", value = "India" };
        country _country2 = new country() { countryname = "USA", value = "USA" };
        countries.Add(_country);
        countries.Add(_country1);
        countries.Add(_country2);

        ViewData["country"] = new SelectList(countries, "value", "countryname", value);
    }

Класс страны выглядит следующим образом,

public class country
{
    public string countryname { get; set; }
    public string value { get; set; }
}

Теперь, как мне использовать данные ViewData["country"] со страницы просмотра, используя Html.DropDownListFor<>() для отображения списка стран. На странице просмотра у меня есть свойство Model, из которого я могу получить значение страны пользователя. Я должен отобразить страну пользователя в раскрывающемся списке с выбором страны текущего пользователя.

Этот код предназначен для страницы редактирования.

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

1 Ответ

4 голосов
/ 22 марта 2011

Вот один из способов (не рекомендуется из-за ViewData, вы можете сразу перейти ко второму предложению):

Предполагается, что у вас есть следующие действия контроллера:

public ActionResult Index()
{
    var model = new MyViewModel();
    model.SelectedCountryValue = "India";
    GetCountryLists(model.SelectedCountryValue);
    return View(model);
}

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

<%= Html.DropDownListFor(
    x => x.SelectedCountryValue, 
    (SelectList)ViewData["country"]
) %>

А теперь рекомендуемый способ:

Модель:

public class MyViewModel
{
    public string SelectedCountryValue { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }
}

Контроллер:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        SelectedCountryValue = "India",
        Countries = GetCountries()
    };
    return View(model);
}

private IEnumerable<SelectListItem> GetCountries()
{
    return new[]
    {
        new SelectListItem { Value = "India", Text = "India" },
        new SelectListItem { Value = "USA", Text = "USA" },
    }
}

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

<%= Html.DropDownListFor(
    x => x.SelectedCountryValue, 
    new SelectList(Model.Countries, "Value", "Text"),
    "Select a country"
) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...