したがって、コントローラにリストプロパティUserContext.ServicesList
を配信するビューがあるとします。ユーザーは既に既存のリストをすでに持っている可能性があり、変更されたレコードをそのリストに更新したいと考えています。何が最善のアプローチです:コントローラーの動的リストの変更をどのように処理するのですか?
1)リストから削除されたレコードを削除しますか?
2)既存のレコードを更新しますか?
3)新しいレコードを追加しますか?
ありがとうございます!
例クラス:
public class UserPage
{
[Key]
public string Id { get; set; }
[ForeignKey("Id")]
public ApplicationUser User { get; set; }
[DataType(DataType.MultilineText)]
public string AboutMe { get; set; }
[DataType(DataType.MultilineText)]
public string AvailableTime { get; set; }
public List<Services> ServicesList { get; set; }
}
public class Services
{
[Key]
public int ServiceId { get; set; }
public string Id { get; set; }
[ForeignKey("Id")]
public ApplicationUser User { get; set; }
public string ServiceName { get; set; }
}
例コントローラ:
[HttpPost]
public ActionResult Edit(UserPage UserContext)
{
if (ModelState.IsValid)
{
if (UserContext.ServicesList != null)
{
foreach (var item in UserContext.ServicesList)
{
// What do I do here?
}
}
db.Entry(UserContext).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(UserContext);
}
'ServiceId'の値が' 0'ならば、その新しいので、追加します。それ以外の場合は更新するか、または削除します。 ?)。あなたの以前の(今削除された)質問に基づいて、あなたはajaxを使ってデータベースから項目を削除していたはずであることを示唆するビューのdeleteイベントを処理していました。 –
@StephenMueckeプロパティはありません。あなたは削除を識別するためのより良い方法を知っていますか? – whimzee
'IsDeleted'プロパティを持つビューモデルを使用し、ビューで非表示の入力を生成します。関連する 'Delete'リンクをクリックすると、その値を '' True ''に変更します(行を非表示にしますが、DOMから削除しないでください)また、' ServiceId'プロパティの符号を変更します –