それは私の最初のasp.net mvcアプリケーションです。ビューに mvc 3 と razor を使用しています。私が問題を抱えている特定のビューは、強く型付けされたビューです (少なくとも私はそうだと思います) が、この種の型を受け入れます:
@model List<List<DataAccess.MCS_DocumentFields>[]>
メイン ビューは非常にカスタマイズされており、データのさまざまな部分にさまざまなロジックが必要であるため、いくつかの部分ビューを作成しました。私の部分的なビューも強く型付けされています(これは正しいと思います) type :
@model List<DataAccess.MCS_DocumentFields>[]
ビューを構築するために必要なものはすべて次の場所にあります。
@using (Html.BeginForm("ActionMethodName", "Forms", FormMethod.Post))
{
<div id="drawForm">
<table border="1">
内部Hhtml.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 値が含まれます。そして、強く型付けされたビューを使用するときに知っていることから、form.validation や更新の準備が整ったデータ バインディングなどの追加の利点を得ることができます...
私の特定のシナリオでは、フォームから送信されたデータを処理するための最良の方法は何ですか?
PS
これが私のメインビューをレンダリングする方法です:
<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>
これは私のパーシャルの 1 つで、使い方を紹介するためのものです。
@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>