1

我正在做 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,所以非常感谢任何帮助。

4

1 回答 1

0

似乎对这个查询的回应很少,所以我会尝试一下。

从文本中理解问题/要求有点困难,但如果我理解正确,您正试图从下拉列表中取回一个值,对吗?如果不让我知道,我将对其进行编辑以使其更适合。

但是,假设我是正确的;

要设置我的下拉列表,我会做一些不同的事情。我不认为这很重要,但我想无论如何我都会分享它。

我有一个这样的 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"];

同样,我不确定这是否回答了您的查询,如果没有,请在此答案中附上评论,我会做出相应调整。

于 2009-08-23T07:03:35.087 回答