Я не понимаю, почему DefaultModelBinder в MVC3 не сопоставляет данные публикации формы с моим методом действия.У меня есть следующие ViewModels :
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; }
}
Они отображаются в (частичное) представление с использованием DisplayTemplates :
@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)
Чтобы проверить, работает ли он только с одним TableRows Я попытался:
public ActionResult SubmitExcel([Bind(Prefix = "TableRows")] TableRowViewModel TableRows)
для проверкиЯ также пытался поставить List<TableRows>
и убрать атрибут Bind .Это не работает.Я получил исключение времени выполнения:
"System.MissingMethodException: для этого объекта не определен конструктор без параметров."
Можете ли вы сказать мне, что я делаю неправильно?*
Спасибо, Франческо