我有型ProductListingViewModel的强类型视图中又包含一个ProductViewModel。 (两个自定义视图模型)。
我有我的网页上某种形式的元素和它们像这样创建的:
<%: Html.DropDownListFor(m => m.ProductViewModel.CategoryId, Model.Categories)%>
其生成HTML:
<select name="ProductViewModel.CategoryId" id="CategoryId">
使用默认的模型结合我所料,当我张贴到其接受类型ProductListingViewModel的参数,它会知道的有关数据来填充ProductViewModel.CategoryId我的控制器动作。
选择列表中的名称似乎表明,它知道有一个类别ID属性然而,当我张贴到我控制器的方法,该ProductViewModel为null ProductViewModel。 如果我建ProductListingViewModel期间创建这个那么它不再为空,但默认的粘结剂似乎并不如我想像的要填充的属性。
这是一个自定义模型粘合剂的情况下,还是我只是缺少一些基本的东西?
干杯。
让我试着总结一下(纠正我,如果我错了)。
模型:
public class ProductListingViewModel
{
public ProductViewModel ProductViewModel { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
}
public class ProductViewModel
{
public string CategoryId { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new ProductListingViewModel
{
Categories = new SelectList(new[]
{
new { Value = "1", Text = "category 1" },
new { Value = "2", Text = "category 2" }
}, "Value", "Text")
};
return View(model);
}
[HttpPost]
public ActionResult Index(ProductListingViewModel model)
{
return View(model);
}
}
视图:
<% using (Html.BeginForm()) { %>
<%: Html.DropDownListFor(m => m.ProductViewModel.CategoryId, Model.Categories)%>
<input type="submit" value="OK" />
<% } %>
现在,当你提交表单你会得到:
model.ProductViewModel.CategoryId = the id that was selected in the drop down list
是不是你所追求的?