我不明白为什么MVC3中的DefaultModelBinder没有将Form Post Data映射到我的操作方法。使用DisplayTemplates为什么MVC3中的DefaultModelBinder不绑定?
public class DisplayExcelTableViewModel
{
public string UploadedFileName { get; set; }
public List<string> TableHeaders { get; set; }
public List<TableRowViewModel> TableRows { get; set; }
}
public class TableRowViewModel
{
public List<string> TableColumns { get; set; }
}
它们显示在一个(部分)查看:
@using (Html.BeginForm("SubmitExcel", "Home", FormMethod.Post))
{
<fieldset>
<table>
<tr>
<th>@Html.DisplayFor(m => m.TableHeaders)</th>//<input id="TableHeaders_0_" name="TableHeaders[0]" type="text" value="Opportunity Id" />
</tr>
<tr>
<td>@Html.DisplayFor(m => m.TableRows)</td>//<input id="TableRows_0__TableColumns_0_" name="TableRows[0].TableColumns[0]" type="text" value="1-H7PKD9" />
</tr>
</table>
<input type="submit" value="Send" />
</fieldset>
}
而且操作方法如下:
public ActionResult SubmitExcel(DisplayExcelTableViewModel excelTable)
我有以下的ViewModels 试试它是否正常工作高电平单TableRows我想:
public ActionResult SubmitExcel([Bind(Prefix = "TableRows")] TableRowViewModel TableRows)
测试我也试图把List<TableRows>
,并采取了绑定属性。这是行不通的。 我得到一个运行时异常:
“System.MissingMethodException:没有为此对象定义的无参数构造函数。”
可以告诉我我做错了什么吗?
感谢弗朗西斯
thenaks的答案。我使用Fiddler 2并将数据正确发布到服务器 – CiccioMiami 2011-05-16 13:41:18