Asp.net mvc 在MVC5中一次编辑多条记录
我想批量编辑记录。我正在为此方法使用表单集合 我目前正在遍历所有项,并使用GetValues方法将所有项存储到数组中 我不想这样做,因为如果我的单子越来越大,可能会让事情变慢。那么,我需要做什么来缩小我的数组/列表,以便它只存储更改的内容呢 谢谢 这是我的控制器:Asp.net mvc 在MVC5中一次编辑多条记录,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我想批量编辑记录。我正在为此方法使用表单集合 我目前正在遍历所有项,并使用GetValues方法将所有项存储到数组中 我不想这样做,因为如果我的单子越来越大,可能会让事情变慢。那么,我需要做什么来缩小我的数组/列表,以便它只存储更改的内容呢 谢谢 这是我的控制器: [HttpPost] public ActionResult Index(FormCollection c) { int i = 0; if(ModelState.IsValid)
[HttpPost]
public ActionResult Index(FormCollection c)
{
int i = 0;
if(ModelState.IsValid)
{
var ProductIDArray = c.GetValues("item.Id");
var ProductReviewStatus = c.GetValues("item.ReviewStatus");
for (i = 0; i < ProductIDArray.Count(); i++)
{
ProductViewModel prod = db.Product.Find(Convert.ToInt32(ProductIDArray[i]));
prod.ReviewStatus = (StatusOfReview)Enum.Parse(typeof(StatusOfReview), ProductReviewStatus[i], true);
db.Entry(prod).State = EntityState.Modified;
}
}
db.SaveChanges();
//return View(db.Product.ToList());
return RedirectToAction("Index");
}
[HttpPost]
公共行动结果索引(FormCollection c)
{
int i=0;
if(ModelState.IsValid)
{
var ProductIDArray=c.GetValues(“item.Id”);
var ProductReviewStatus=c.GetValues(“item.ReviewStatus”);
对于(i=0;i
这是我的观点
@model IEnumerable<Test_ListDrop.Models.ProductViewModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm())
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Cost)
</th>
<th>
@Html.DisplayNameFor(model => model.OutOfStock)
</th>
<th>
@Html.DisplayNameFor(model => model.ReviewStatus)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.HiddenFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cost)
</td>
<td>
@Html.DisplayFor(modelItem => item.OutOfStock)
</td>
<td>
@Html.EnumDropDownListFor(model => item.ReviewStatus, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => item.ReviewStatus, "", new { @class = "text-danger" })
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
<tr>
<td colspan="4">
<input type="submit" value="Submit" />
</td>
</tr>
</table>
}
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数
@ActionLink(“新建”、“创建”)
@使用(Html.BeginForm())
{
@DisplayNameFor(model=>model.Name)
@DisplayNameFor(model=>model.Cost)
@DisplayNameFor(model=>model.OutOfStock)
@DisplayNameFor(model=>model.ReviewStatus)
@foreach(模型中的var项目)
{
@Html.HiddenFor(modeleItem=>item.Id)
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Cost)
@DisplayFor(modelItem=>item.OutOfStock)
@EnumDropDownListFor(model=>item.ReviewStatus,htmlAttributes:new{@class=“form control”})
@Html.ValidationMessageFor(model=>item.ReviewStatus,“,new{@class=“text danger”})
@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.id})|
@ActionLink(“删除”,“删除”,新的{id=item.id})
}
}
我认为你应该选择IPagedList。它肯定会成功的。因为它有很多用于批量数据的功能,例如:
看看这里,可能会有帮助:谢谢。使用IPagedList似乎是一个快速解决的问题。如何将DropDownListFor的默认值设置为在数据库中选择的值?我现在这样做
var currentStatus=a.ReviewStatus@Html.DropDownListFor(model=>a.ReviewStatus,new SelectList(a.ApplicationReviewStatusList,currentStatus),new{@class=“form-control”,@style=“width:150px;height:30px”})@Html.ValidationMessageFor(model=>a.ReviewStatus,”,new{@class=“text danger”})
但它不起作用。