public class FileSubmissionModel
{
public List<DraftFile> ValidFiles{ get ; set ; }
public List<DraftFile> InvalidFiles{ get ; set ; }
}
其中:
public class DraftFile
{
public Guid DraftId { get ; set ; }
public string OriginalFileName { get ; set ; }
}
给出null:
[HttpPost]
public ActionResult Step2(FileSubmissionModel validFiles)
{
...
}
参数'validFiles.ValidFiles'&amp; 'validFiles.InvalidFiles'返回null。有谁知道为什么以及我能做些什么来纠正这个? 干杯, 皮特
按照要求查看代码...我已经剪掉了一些但你得到了要点:
@foreach (var item in Model.InvalidFiles)
{
count++;
<tr>
@Html.HiddenFor(model => model.InvalidFiles[count].DraftId)
@Html.HiddenFor(model => model.InvalidFiles[count].OriginalFileName )
</tr>
}
答案 0 :(得分:1)
问题似乎是Step2方法 validFiles 的参数与 FileSubmissionModel 上的 ValidFiles 属性相同。
假设你在视图中做了类似的事情:
@for(var i = 0; i < 10; i++)
{
<p> @Html.EditorFor(model => model.ValidFiles[i].DraftId)</p>
}
该字段的名称将生成为 ValidFiles [0] .DraftId ,这是发回服务器的内容。
默认模型绑定器尝试绑定到参数而不是绑定到模型上的属性,因为名称相同,默认模型绑定器执行不区分大小写的匹配。
我现在的建议是更改方法参数的名称。