0

我在 asp.net MVC 3 项目中使用 Razor 创建的表单遇到了一个奇怪的问题。我的主要观点是类型的强类型:

@model List<DataAccess.MCS_DocumentFields>

我有四个部分视图,它们一个接一个地呈现创建表。这是主视图的代码...

<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 条记录。我试图更改部分视图的呈现顺序,并且我总是从第一个部分视图中获取全部数据,最多 10 条记录,具体取决于第二条记录。我认为这个数字 10 有什么问题,所以我做了一个测试,渲染了一个包含 30 条记录的局部视图,当我第一次渲染它时,我得到了 30 条记录。所以它不限于 10 条,但是如果说我的第一部分有 2 条记录,而我的第二部分有 12 条记录,我会以任何方式取回 10 条记录,我只能从 2 条记录中获得 1 条记录,从 12 条记录中获得 10 条记录. 除了这个数字 10,所有这一切似乎都非常随机。

这是我的两个部分,只是为了看看我是如何处理它们的:

@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