这是我第一次使用asp.net mvc应用程序。我正在使用mvc 3和razor来创建视图。我遇到问题的具体视图是强类型视图(至少我认为是),但它接受这种类型:
@model List<List<DataAccess.MCS_DocumentFields>[]>
我创建了几个部分视图,因为主视图非常定制化,而且我需要为数据的不同部分编写大量不同的逻辑。我的部分视图也是强类型的(我认为这样说是正确的),类型为:
@model List<DataAccess.MCS_DocumentFields>[]
我构建视图所需的一切都在以下位置:
@using (Html.BeginForm("ActionMethodName", "Forms", FormMethod.Post))
{
<div id="drawForm">
<table border="1">
在
Html.BeginForm
中,我使用从控制器获取的所有数据构建了一个表格。现在在提交时:<button type="submit">Submit</button>
我正在寻找最佳方法来获取我的数据,并更新更改的内容到数据库中。在我的控制器中,我有这个方法:
[HttpPost]
public ActionResult ActionMethodName(FormCollection collection)
{
var test = collection;
List<MCS_Documents> model = DocumentsService.All().ToList();
return View("Index", model);
}
我可以找到我的数据,但是这太复杂了,我甚至不确定如何访问它。我尝试了其他方法,使用相同的方法但接受视图所接受的类型作为参数:
[HttpPost]
public ActionResult ActionMethodName(List<List<DataAccess.MCS_DocumentFields>[]> collection)
{
但是当我这样做时,集合的值为null。据我所知,当我使用强类型视图时,我可以获得一些额外的优势,比如表单验证和数据绑定准备更新等等...所以,在我的特定场景下,如何处理来自表单提交的数据是最好的方法呢?
附言
以下是我如何渲染主视图:
<table border="1">
<colgroup>
<col span="1" style="width: 10%;" />
<col span="1" style="width: 40%;" />
<col span="1" style="width: 25%;" />
<col span="1" style="width: 25%;" />
</colgroup>
<tbody>
@for (int i = 0; i < Model.Count(); i++)
{
if (Model[i][0][0].ContentTypeId == 1)
{
@Html.Partial("_PartialHeader", Model[i])
}
else if (Model[i][0][0].ContentTypeId == 2)
{
@Html.Partial("_PartialDrawing", Model[i])
}
else if (Model[i][0][0].ContentTypeId == 3)
{
@Html.Partial("_PartialBody", Model[i])
}
else if (Model[i][0][0].ContentTypeId == 4)
{
@Html.Partial("_PartialFooter", Model[i])
}
}
</tbody>
</table>
<button type="submit">Save</button>
这是我的一个部分,仅用于展示我如何使用它们:
@model List<DataAccess.MCS_DocumentFields>[]
<tr>
@if (!string.IsNullOrEmpty(Model[0][0].FieldValue))
{
<td colspan="2">
@Html.DisplayFor(x => x[0][0].FieldValue)
</td>
}
else
{
<td colspan="2">
Sign in here
</td>
}
@if (!string.IsNullOrEmpty(Model[1][0].FieldValue))
{
<td colspan="2">
@Html.DisplayFor(x => x[1][0].FieldValue)
</td>
}
else
{
<td colspan="2">
Sign in here
</td>
}
</tr>