部分视图不会返回所有数据

时间:2013-05-16 14:12:59

标签: c# asp.net-mvc-3 razor

我在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条记录。所有这些似乎都是随机的,不包括这个数字。

以下是我的两个部分内容,只是为了看看我是如何处理它们的:

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

关于这种奇怪行为的任何想法以及如何解决它?

0 个答案:

没有答案