بالاخره موفق شدم حل اش کنم
با استفاده از توضیحاتی که تو این لینک داده شده ما میتونیم با ایجاد IList<> ای از مدل مون اون لیست رو به کنترلر ارسال کنیم و پردازش های لازم رو انجام بدیم.
برای مثال:
مدلی به شرح زیر داریم:
توضیح: این مدل میتونه مدل کامنت های کاربران در انتهای مطالب صفحات باشه
public class CommentModel
{
[Key]
[Display(Name = "کد")]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int CommentId { get; set; }
[Required(ErrorMessage = "کاربر گرامی لطفا نام خود را وارد نمائید ")]
[Display(Name = "نام")]
[MaxLength(20, ErrorMessage = "کاربر گرامی حداکثر 20 کاراکتر می توانید وارد کنید")]
public string CommentAuthor { get; set; }
[Display(Name = "انتقادها و پیشنهادها:")]
[DataType(DataType.MultilineText)]
[Required(ErrorMessage = "کاربر گرامی لطفا انتقادها و پیشنهادهای خود را بنویسید ")]
[MaxLength(255, ErrorMessage = "کاربر گرامی حداقل 50 کاراکتر و حداکثر 255 کاراکتر می توانید وارد کنید"),MinLength(10)]
public string CommentContent { get; set; }
[Display(Name = "تاریخ ارسال")]
[DataType(DataType.DateTime)]
public DateTime CreateDate { get; set; }
[Required(ErrorMessage = "کاربر گرامی لطفا وضعیت پیغام را مشخص نمائید ")]
[Display(Name = "وضعیت")]
public bool IsActive { get; set; }
[Display(Name = "کد صفحه")]
public int PageId { get; set; }
public virtual PageModel PageModel { get; set; }
}
از این مدل کلاسی بشرح زیر ایجاد میکنیم. با فرض اینکه کلاس مشتق شده از کلاس Admin
public class Admin_CommentsModel : Admin
{
public IList<CommentModel> CommentModels { set; get; }
}
حالا به کنترل مربوطه رفته و تابع View اون رو می نویسیم.
public ActionResult NewComments()
{
if (ModelState.IsValid)
{
var item = new Admin_CommentsModel
{
...
CommentModels = context.CommentModels.Where(p => p.IsActive == false).OrderBy(p=>p.PageId).OrderByDescending(p => p.CreateDate).ToList()
};
return View(item);
}
return RedirectToAction("Index");
}
در View مربوطه کد زیر رو می نویسیم:
کد HTML:
@model Admin_CommentsListModel
@using (Html.BeginForm())
{
Html.ValidationSummary(true);
for(int i=0;i<Model.CommentModels.Count();i++)
{
@Html.EditorFor(modelItem => Model.CommentModels[i])
}
<input type="submit" value="تایید موارد انتخاب شده" />
}
بعد کد زیر رو در Post کنترلر مربوطه می نویسیم:
[HttpPost]
public ActionResult NewComments(ICollection<CommentModel> CommentModels)
{
if (ModelState.IsValid)
{
foreach (var item in CommentModels)
if (item.IsActive)
Update...
}
return RedirectToAction("NewComments");
موفق باشید