MVC — UpdateModel и DropDownLists

Я делаю MVC и ищу значения в раскрывающихся списках. При вызове UpdateModel обновляются только значения до поиска и ничего после. Я не получаю никаких ошибок, хотя.

Я могу редактировать, создавать и использовать следующий код в своем контроллере:

ViewData["SiteMaintenanceId"] = from m in this._siteRepository.FindAllSiteMaintenances().ToList()

select new SelectListItem
{
   Text = m.Maintenance,
   Value = m.SiteMaintenanceId.ToString(),
   Selected = (m.SiteMaintenanceId == site.SiteMaintenanceId)
};


return View(new SiteFormViewModel(site,               
this._siteRepository.FindAllSiteOperators()));

У меня есть следующее, на мой взгляд:

 <%= Html.DropDownList("SiteOperatorId")%>

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

Это мой первый раз, когда я делаю MVC, поэтому любая помощь очень ценится.


person Community    schedule 22.08.2009    source источник


Ответы (1)


Кажется, на этот запрос очень мало ответов, поэтому я попробую.

Из текста немного сложно понять проблему/требование, но если я правильно вас понимаю, вы пытаетесь вернуть значение из раскрывающегося списка, верно? Если нет, дайте мне знать, и я отредактирую это для лучшего соответствия.

Предполагая, однако, что я прав;

Чтобы настроить раскрывающийся список, я делаю немного по-другому. Не думаю, что это важно, но все равно решил поделиться.

У меня есть такая FormViewModel;

public class CalendarEventFormViewModel
{
    public CalendarItem Event { get; set; }
    public SelectList States;
}

В моем ActionResult у меня есть следующее для предоставления состояний;

fvm.States = new SelectList(Enumerations.EnumToList<Enumerations.AustralianStates>(), "Value", "Key", fvm.Event.state);

Затем я просто возвращаю это в представление.

Представление имеет раскрывающийся список, подобный этому;

<% using (Html.BeginForm()) { %>
  <%=Html.DropDownList("selectedState", Model.States, new { @class="stateSelector" })%>
<%} %>

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

[AcceptVerbs(HttpVerbs.Post), ValidateInput(false), Authorize]
public ActionResult Add(FormCollection collection)
{
    CalendarItem fvm = new CalendarItem();
    UpdateModel(fvm);
}

Теперь это работает для меня, и все поля в объекте CalendarItem заполнены.

Однако, если вы не получаете свои значения, вы можете попробовать;

String state = collection["selectedState"];

Опять же, я не уверен, отвечает ли это на ваш запрос, и если нет, пожалуйста, прикрепите комментарий к этому ответу, и я внесу соответствующие коррективы.

person griegs    schedule 23.08.2009