-1
レコードを一括編集したいです。私はこのメソッドのフォームコレクションを使用しています。MVC5で複数のレコードを一度に編集するには
現在、すべてのアイテムをループしています。すべてのアイテムを配列に格納するには、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");
}
そして、私はあなたがIPagedListで行くべきだと思う私の見る
@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>
}
は、それが役立つかもしれない、ここを見て:https://www.codeproject.com/Articles/1191769/Beginners-ありがとうございます。実装のためのガイド - AJAX-CRUD-Operati –
ありがとうございます。 IPagedListを使用すると解決策のようです – CB4
簡単な質問。 DropDownListForのデフォルト値をデータベースで選択された値に設定するにはどうすればよいですか? 私は現在このようにしています。 'var currentStatus = a.ReviewStatus; @ Html.DropDownListFor(モデル=> a.ReviewStatus、新しいSelectList(a.ApplicationReviewStatusList、currentStatus)、新しい{@class = "フォームコントロール"、@スタイル= "幅:150px;高さ:30px"}) @ Html.ValidationMessageFor(model => a.ReviewStatus、 ""、new {@class = "text-danger"}) ')が動作しません。 – CB4