作为 ASP.Net MVC3 新手,我们有一个需要帮助的问题。(这个帖子底部的问题也是。)
首先,我不确定以下是否是解决此问题的最佳方法,所以如果我们朝错误的方向前进,请告诉我。我们想使用部分视图来查找下拉列表。在某些情况下,查找将在多个地方完成,而且数据不是我们视图模型的一部分。数据可能来自我们应用程序中的数据库或 Web 服务。有些数据是在启动时加载的,有些是基于表单中选择的其他值。
我们从主视图调用子操作,并返回带有我们获得的数据的部分视图。一旦用户选择了他们的选择,我们就不确定如何将所选项目代码存储在我们的主视图模型中。
在我们的主要形式中,我们调用一个动作:
@model Apps.Model.ViewModels.AVMApplicationInfo
...
<div class="editor-label">
@Html.LabelFor(m => m.VMResidencyWTCS.DisplayState)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.VMResidencyWTCS.DisplayState)
@Html.DropDownListFor(m => m.VMResidencyWTCS.DisplayState, Apps.Model.Helpers.ResidencyStates.StateList)
@Html.ValidationMessageFor(m => m.VMResidencyWTCS.DisplayState)
</div>
@Html.Action("DisplayCounties", "PersonalInfo")
...
在 PersonalInfo 控制器中:
[ChildActionOnly]
public ActionResult DisplayCounties()
{
IList<County> countiesDB = _db.Counties
.OrderBy(r => r.CountyDescr)
.Where(r => r.State == "WI"
&& r.Country == "USA")
.ToList();
//Create an instance of the county partial view model
VMCounty countyView = new VMCounty();
//Assign the available counties to the view model
countyView.AvailableCounties = new SelectList(countiesDB, "CountyCd", "CountyDescr");
return PartialView("_DisplayCounties", countyView);
}
在 _DisplayCounties 部分视图中:
@model Apps.Model.ViewModels.VMCounty
<div class="editor-label">
@Html.LabelFor(m => m.CountyDescr)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.SelectedCountyCd, Model.AvailableCounties)
</div>
如何将 SelectedCountyCd 分配给主表单视图模型 (Apps.Model.ViewModels.AVMApplicationInfo ) 中的字段?何时调用子动作/部分视图是否存在任何问题;即,它是否在启动时加载,是否可以使用此方法将用户选择作为查找过滤器包含在内?如果是这样,如何将值传递给子控制器;视野袋?