我刚刚提到this article为我的asp.net mvc 5项目表单视图页面添加分页。在这个表单页面中它有许多文本区域(如15),所以我每页限制一个文本区域。
现在,这正如我所料,每页显示一个文本区域。
但是一旦我将数据插入到第一个文本区域然后转到下一个文本区域,然后再单击上一个按钮,那么第一个文本区域的初始添加值是否会消失?我的解决方案有什么问题?
这是因为,在我的场景中,我正在使用表格?
这是控制器方法
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; }
}
答案 0 :(得分:0)
我认为你应该在跳转到下一个表单之前将textarea的插入数据保存在任何会话对象中。在每个Add_Product方法调用中,表单都填充了db.AB_ProductTypeCategoryField的数据,该数据不会从用户以前填充的数据中更新。