0

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>
                     }
}

この奇妙な動作についてのアイデアと、どうすれば修正できますか?

4

0 に答える 0