C# MVC视图模型集合正在Fiddler中填充和查看,但到达控制器操作时为空
我有3个嵌套模型,C# MVC视图模型集合正在Fiddler中填充和查看,但到达控制器操作时为空,c#,asp.net-mvc,post,asp.net-mvc-5,viewmodel,C#,Asp.net Mvc,Post,Asp.net Mvc 5,Viewmodel,我有3个嵌套模型,LevelViewModel,LevelContentViewModel,和LevelContentDomainViewModel。模型LevelContent具有多个属性,包括: public List<LevelContentDomainViewModel> Domains { get; set; } 视图1采用LevelView模型和LevelContent项目列表。每个项目上的编辑按钮都会转到局部视图EditLevelContent.cshtml,该视图在
LevelViewModel
,LevelContentViewModel
,和LevelContentDomainViewModel
。模型LevelContent
具有多个属性,包括:
public List<LevelContentDomainViewModel> Domains { get; set; }
视图1采用LevelView
模型和LevelContent
项目列表。每个项目上的编辑按钮都会转到局部视图EditLevelContent.cshtml
,该视图在视图1中呈现
EditLevelContent.cshtml
这对域列表中的每个项都有一个复选框
using (Html.BeginForm("EditLevelContent", "Level", FormMethod.Post ))
...
@for (int d = 0; d < Model.Domains.Count; d++)
{
@Html.HiddenFor(m => m.Domains[d].DomainId)
@Html.LabelFor(m => m.Domains[d].DomainName, Model.Domains[d].DomainName)
@Html.CheckBoxFor(m => m.Domains[d].Included,Model.Domains[d].Included)
}
levelContentModel
已填充,但其属性域始终为空
在Fiddler中,我可以看到有一些值被发布到域[0]。DomainName
和域[0]。包含到8。如果我将Domains属性作为隐藏的
字段包含,则没有区别
谢谢 首先删除您的[Bind]
属性。它将域
排除在绑定之外,并且在使用视图模型时,永远不需要[Bind
属性。作为补充说明,它只是@Html.LabelFor(m=>m.Domains[d].DomainName)
和@Html.CheckBoxFor(m=>m.Domains[d].Included)
-第二个参数是无意义的。删除[Bind]工作正常。感谢您首先删除您的[Bind]
属性。它将域
排除在绑定之外,并且在使用视图模型时永远不需要[Bind
属性。顺便提一下,它只是@Html.LabelFor(m=>m.Domains[d].DomainName)
和@Html.CheckBoxFor(m=>m.Domains[d]。包括在内)
-第二个参数没有任何意义。删除[Bind]有效。谢谢
using (Html.BeginForm("EditLevelContent", "Level", FormMethod.Post ))
...
@for (int d = 0; d < Model.Domains.Count; d++)
{
@Html.HiddenFor(m => m.Domains[d].DomainId)
@Html.LabelFor(m => m.Domains[d].DomainName, Model.Domains[d].DomainName)
@Html.CheckBoxFor(m => m.Domains[d].Included,Model.Domains[d].Included)
}
public ActionResult EditLevelContent([Bind(Include = "Id,SelectedContentId,SortOrder,SelectedLevelId")] LevelContentViewModel levelContentModel)