Asp.net mvc 在MVC5中一次编辑多条记录

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)

我想批量编辑记录。我正在为此方法使用表单集合

我目前正在遍历所有项,并使用GetValues方法将所有项存储到数组中

我不想这样做,因为如果我的单子越来越大,可能会让事情变慢。那么,我需要做什么来缩小我的数组/列表,以便它只存储更改的内容呢

谢谢

这是我的控制器:

 [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。它肯定会成功的。因为它有很多用于批量数据的功能,例如:

  • 对大量数据进行分页
  • 造型是可能的
  • 所有关于列表的内容都可以通过分页轻松完成
  • 还有很多其他功能,比如添加Css,获取隐藏值等等

  • 看看这里,可能会有帮助:谢谢。使用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”})
    但它不起作用。