Получить идентификатор и тип из Html.DropDownList для контроллера - PullRequest
0 голосов
/ 22 августа 2011

У меня есть класс под названием

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Country Country { get; set; }
}

public class Country
{
    public int Id { get; set; }
    public string Type { get; set; }
}

Моя страница просмотра MVC строго напечатана как Персона, и есть раскрывающийся список со списком стран.

In My Controller Index

public ActionResult Index()
{
    LoadCountryList();
    return View(Person);
}

private void LoadCountryList()
{
    IEnumerable<CountryList> countryList = CountryListService.GetCountryList();
    ViewData["CountryList"] = new SelectList(country, "Id", "Type", 0);
}

Код в html

<%: Html.DropDownListFor(model => model.Country.Id, (IEnumerable<SelectListItem>)ViewData["CountryList"], "--Select--")%>

Когда страница отправляется, вызывается метод Create в контроллере

public ActionResult Create(Person person)
{
    // person.Country.Id has the value
    // person.Country.Type is null
}

Я получаю только идентификатор страны от объекта-человека в методе создания. Идентификатор страны загружается внутри объекта Person в разделе Страна.

Можно ли каким-либо образом получить идентификатор и тип страны при передаче со страницы на контроллер?

Я знаю, что передаю Html.DropDownListFor (model => model.Country.Id .... отсюда.

Есть ли какое-нибудь решение, чтобы я получил Id и Type в контроллере.

Спасибо

1 Ответ

0 голосов
/ 22 августа 2011

Пропускать его через объект person - не лучший способ сделать это.Вместо этого назначьте идентификатор в раскрывающемся списке следующим образом:

<%: Html.DropDownListFor(
      model => model.Country.Id, 
      (IEnumerable<SelectListItem>)ViewData["CountryList"], "--Select--")
      new { id = "CountryID" }
%>

, а затем вставьте его в качестве параметра в метод Create:

public ActionResult Create(Person person, int CountryID)
{
   var country = CountryListService.GetCountryList().Where(x => x.id == CountryID);

   person.Country = country;
   ...
}

ASP .NET MVC будет искатьэлемент управления с тем же именем идентификатора, что и у параметра в вызове метода, и передает его через.

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