Ben bir uyarlama üzerinde çalışıyorum SQL MVC ve Linq kullanarak bazı temel yuvarlak başımı almak için Stephen Walther en TaskList application:MVC Toplu Düzenleme - Sql Liste Kaydet Linq
kullanıyorum bir Toplu Düzenleme sistemini ekliyorum Steve Sanderson's blog'da açıklanan kavramlar.
Tüm bunlar beklendiği gibi çalışıyor, ancak döndüğüm Görev Listesini kaydetmede sorun yaşıyorum. BulkEdit'e gönderim, iade edilen listeden döngüler alır ve her öğeyi, Görevlerim'in LinqToSql db listesindeki güncelleştirir. Benim BulkEdit görünümü ViewPage<List<TaskList.Models.Task>>
devralır ve aşağıdaki gibidir
System.Web.Mvc.ViewUserControl<Models.Task>
devralır ve şöyle
<%
using (Html.BeginForm())
{
%>
<div id="items">
<%
foreach (var task in ViewData.Model)
{
Html.RenderPartial(
"TaskEditor",
task,
new ViewDataDictionary(ViewData)
{
{"prefix", "tasks"}
}
);
}
%>
</div>
<input type="submit" value="Save changes" />
<%
}
%>
:
<div>
<%= Html.Hidden(ViewData["prefix"] + ".index", ViewData.Model.Id) %>
<% var fieldPrefix = string.Format("{0}[{1}].", ViewData["prefix"], ViewData.Model.Id); %>
<%= Html.Hidden(fieldPrefix + "Id", ViewData.Model.Id) %>
Description:
<%= Html.TextBox(fieldPrefix + "TaskDescription", ViewData.Model.TaskDescription)%>
Date:
<%= Html.TextBox(fieldPrefix + "EntryDate", ViewData.Model.EntryDate.ToString("o"))%>
Completed:
<%= Html.CheckBox(fieldPrefix + "IsCompleted", ViewData.Model.IsCompleted)%>
</div>
Kontrolörü alın ve aşağıdaki gibi Mesaj yöntemler şunlardır:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult BulkEdit()
{
var tasks = from t in db.Tasks orderby t.EntryDate descending select t;
return View(tasks.ToList());
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult BulkEdit(IList<Task> tasks)
{
foreach(Task task in tasks)
{
foreach(Task dbTask in db.Tasks)
{
if (dbTask.Id == task.Id)
{
dbTask.TaskDescription = task.TaskDescription;
dbTask.EntryDate = task.EntryDate;
dbTask.IsCompleted = task.IsCompleted;
}
}
}
db.SubmitChanges();
return RedirectToAction("Index");
}
Sorum şu ki, bu da öyle görünüyor karmaşık ve henüz listeden eklenen veya silinen görevleri henüz yapmadım. Ne yapmayı tercih ediyorum
db.Tasks = tasks;
gibi bir şey ve Linq olanları değişti ve hangilerinin eski/yeni olan atlatmanın tüm sihrini yapalım.
Bu mümkün mü? Yoksa birazdan Linq'den biraz fazla bekliyorum?