表单文本区域值未使用分页保存

时间:2016-01-04 04:33:39

标签: c# jquery asp.net-mvc pagination paging

我刚刚提到this article为我的asp.net mvc 5项目表单视图页面添加分页。在这个表单页面中它有许多文本区域(如15),所以我每页限制一个文本区域。

现在,这正如我所料,每页显示一个文本区域。

enter image description here

但是一旦我将数据插入到第一个文本区域然后转到下一个文本区域,然后再单击上一个按钮,那么第一个文本区域的初始添加值是否会消失?我的解决方案有什么问题?

这是因为,在我的场景中,我正在使用表格?

这是控制器方法

public ActionResult Add_Product(int? page)
{
    var dummyItems = db.AB_ProductTypeCategoryField;
    var pager = new PaginationModel.Pager(dummyItems.Count(), page);

    var model = new AddNewProduct
    {
        ListProductFields = dummyItems.OrderBy(i => i.ProductFieldID).Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize).ToList(),
        Pager = pager
    };

    return View(model);
}

这是查看页面

@model project_name.Models.AddNewProduct

@{
    ViewBag.Title = "Brochure_Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h4>Add New Product</h4>

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()    
    <div class="form-horizontal">      
        @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

        @for (int i = 0; i < Model.ListProductFields.Count; i++)
        {   

            <div class="form-group">
                @Html.LabelFor(x => x.ListProductFields[i].ProductFieldNameEn, Model.ListProductFields[i].ProductFieldNameEn, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">              
                        @Html.TextAreaFor(m => m.ListProductFields[i].Field_Value_EN, new { @class = "form-control summernote", @row = 5 })
                </div>
            </div>
            <div class="form-group">
                @Html.LabelFor(x => x.ListProductFields[i].ProductFieldNameAr, Model.ListProductFields[i].ProductFieldNameAr, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                        @Html.TextAreaFor(m => m.ListProductFields[i].Field_Value_AR, new { @class = "form-control summernote", @row = 5 })                 
                </div>
            </div>


                    <!-- pagination section-->
                    @if (Model.Pager.EndPage > 1)
                    {
                        <ul class="pagination">
                        @if (Model.Pager.CurrentPage > 1)
                        {
                                <li>
                                    <a href="~/Home/Add_Product">First</a>
                                </li>
                                <li>
                                    <a href="~/Home/Add_Product?page=@(Model.Pager.CurrentPage - 1)">Previous</a>
                                </li>
                            }

                        @for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++)
                        {
                                <li class="@(page == Model.Pager.CurrentPage ? "active" : "")">
                                    <a href="~/Home/Add_Product?page=@page">@page</a>
                                </li>
                            }

                        @if (Model.Pager.CurrentPage < Model.Pager.TotalPages)
                        {
                                <li>
                                    <a href="~/Home/Add_Product?page=@(Model.Pager.CurrentPage + 1)">Next</a>
                                </li>
                                <li>

                                    <a href="~/Home/Add_Product?page=@(Model.Pager.TotalPages)">Last</a>
                                </li>
                            }
                        </ul>
                    }


        }



        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>


    </div>

}

这是相关的模型类

public class AddNewProduct
{
        public IList<AB_ProductTypeCategoryField> ListProductFields { get; set; }    
        public Pager Pager { get; set; }
}
public partial class AB_ProductTypeCategoryField
{
    public string ProductFieldNameEn { get; set; }
    public string ProductFieldNameAr { get; set; }

    public string Field_Value_EN { get; set; }
    public string Field_Value_AR { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我认为你应该在跳转到下一个表单之前将textarea的插入数据保存在任何会话对象中。在每个Add_Product方法调用中,表单都填充了db.AB_ProductTypeCategoryField的数据,该数据不会从用户以前填充的数据中更新。