MVC3 Razor模型绑定器和继承的集合

Ale*_*ina 6 collections modelbinders razor asp.net-mvc-3

我希望我不会错过一些非常明显的东西,但有没有理由为什么模型绑定器总是无法绑定从集合继承的视图模型?

假设我想显示一个分页列表并显示一个组合框并在其上方添加按钮(处理简单列表).涉及的类看起来像:

public class PagedList<T> : List<T>
{
    public int TotalCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后是一个看起来像的视图模型:

public class MyViewModel : PagedList<ConcreteModel>
{
    public IEnumerable<ChildModel> List { get; set; }
    public int? SelectedChildModelId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所以在视图中(Razor):

@model MyViewModel 
@using (Html.BeginForm())
{
    @Html.DropDownListFor(model => model.SelectedChildModelId, new SelectList(Model.List, "ChildModelId", "DisplayName"))
}
Run Code Online (Sandbox Code Playgroud)

和控制器HttpPost动作:

public ActionResult(MyViewModel viewModel)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

以上将导致ActionResult中的viewModel为null.有合理的解释吗?据我所知,它仅限于查看从集合继承的模型.

我知道我可以使用自定义绑定器解决它,但涉及的属性是原始类型,甚至没有任何泛型或继承.

我重新设计了视图模型,使集合继承了类型作为属性,并修复了问题.然而,我仍然在摸着为什么粘合剂会破坏它.任何建设性的想法都赞赏.

Dev*_*ner 0

有时,如果表单帖子中的数据采用不同的格式,则模型绑定到集合的效果会更好。

我使用一个名为 postify 的插件。

http://www.nickriggs.com/posts/post-complex-javascript-objects-to-asp-net-mvc-controllers/