asp.net MVC 3 プロジェクトで Razor で作成されたフォームで奇妙な問題が発生しています。私の主なビューは type の強く型付けされています:
@model List<DataAccess.MCS_DocumentFields>
テーブルを作成して次々にレンダリングされる4つの部分ビューがあります。これがメインビューのコードです...
<div id="drawForm">
<table border="1">
@for (int i = 0; i < Model.Count(); i++)
{
if (Model[i].ContentTypeId == 1)
{
headerModel.Add(Model[i]);
}
if (Model[i].ContentTypeId == 2)
{
drawModel.Add(Model[i]);
}
if (Model[i].ContentTypeId == 3)
{
bodyModel.Add(Model[i]);
}
if (Model[i].ContentTypeId == 4)
{
footerModel.Add(Model[i]);
}
}
@Html.Partial("_PartialHeadear", headerModel)
@Html.Partial("_PartialDrawing", drawModel)
@Html.Partial("_PartialBody", bodyModel)
@Html.Partial("_PartialFooter", footerModel)
</table>
<button type="submit">Save</button>
</div>
コントローラーに 20 個、25 個、または 30 個のレコードを戻す必要があります。
public ActionResult ActionMethodName(List<MCS_DocumentFields> collection)
{
var test = collection;
List<MCS_Documents> model = DocumentService.All().ToList();
return View("Index", model);
}
しかし実際には、最初の部分ビューからのデータのみを取得します。ほとんどの場合、正確に 10 件のレコードを取得します。部分ビューのレンダリングの順序を変更しようとしましたが、最初の部分ビューから 2 番目の部分ビューに応じて最大 10 レコードまでのデータ全体を常に取得します。この 10 という数字には何かがあると思い、30 レコードの部分ビューをレンダリングするテストを行い、最初にレンダリングすると 30 レコードが返されました。したがって、10 に制限されているわけではありませんが、最初のパーシャルに 2 つのレコードがあり、2 番目のパーシャルに 12 のレコードがある場合、この方法で 10 のレコードが返されます。 . この数字の 10 を除いて、これはすべて非常にランダムに見えます。
以下は、私がそれらをどのように扱っているかを確認するための 2 つのパーシャルです。
@model List<DataAccess.MCS_DocumentFields>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td colspan="4" align="center">
<img src= "@Url.Content("~/Content/" + Model[i].FieldValue)" alt="Logo" />
@Html.HiddenFor(d => d[i].FieldValue)
@Html.HiddenFor(d => d[i].QuestionText)
@Html.HiddenFor(d => d[i].Id)
</td>
</tr>
}
これにはより多くのロジックがあります:
@model List<DataAccess.MCS_DocumentFields>
@{
int headerCol = 0;
}
@for (int i = 0; i < Model.Count; i++)
{
if (headerCol == 0)
{
@:<tr>
}
if (Model[i].MCS_Fields.FieldTypeId == 98)
{
<td colspan="2">
@*<img src= "@Url.Content("~/Content/" + Model[i].FieldValue)" alt="Logo" />*@
@Html.DisplayFor(y => y[i].FieldValue)
@Html.HiddenFor(y => y[i].FieldValue)
@Html.HiddenFor(y => y[i].Id)
</td>
++headerCol;
}
else if (string.IsNullOrEmpty(Model[i].FieldValue) && Model[i].MCS_Fields.FieldTypeId != 98)
{
<td colspan="2">
@Html.DisplayFor(y => y[i].QuestionText)
@Html.HiddenFor(y => y[i].QuestionText)
@Html.HiddenFor(y => y[i].FieldValue)
@Html.HiddenFor(y => y[i].Id)
</td>
++headerCol;
}
else
{
<td colspan="2">
@Html.DisplayFor(y => y[i].QuestionText)
@Html.HiddenFor(y => y[i].QuestionText)
:
@Html.DisplayFor(y => y[i].FieldValue)
@Html.HiddenFor(y => y[i].FieldValue)
@Html.HiddenFor(y => y[i].Id)
</td>
++headerCol;
}
if (headerCol == 2)
{
headerCol = 0;
@:</tr>
}
}
この奇妙な動作についてのアイデアと、どうすれば修正できますか?