アプリケーションの同じページから編集機能と削除機能を使用する方法を理解しようとしています。現時点では、私のコントローラーは次のようになっています。
[HttpPost]
public ActionResult Edit(CodeTagViewModel codeTagViewModel, FormCollection collection)
{
if (ModelState.IsValid)
{
List<Tag> tagsToAdd = new List<Tag>();
codeTagViewModel.Tags = db.Tags.ToList();
foreach (Tag tag in codeTagViewModel.Tags)
{
if (collection[tag.TagID.ToString()].ToString().Contains("true"))
{
tagsToAdd.Add(tag);
}
}
codeTagViewModel.SelectedTags = tagsToAdd;
Code code = db.Code.Find(codeTagViewModel.CodeID);
MapModelToCode(codeTagViewModel, code);
db.Entry(code).State = EntityState.Modified;
db.SaveChanges();
return View(codeTagViewModel);
}
return RedirectToAction("Index");
}
[HttpPost, ActionName("Delete")]
public ActionResult Edit(CodeTagViewModel codeTagViewModel, FormCollection collection)
{
if (ModelState.IsValid)
{
List<Tag> tagsToAdd = new List<Tag>();
codeTagViewModel.Tags = db.Tags.ToList();
foreach (Tag tag in codeTagViewModel.Tags)
{
if (collection[tag.TagID.ToString()].ToString().Contains("true"))
{
tagsToAdd.Add(tag);
}
}
codeTagViewModel.SelectedTags = tagsToAdd;
Code code = db.Code.Find(codeTagViewModel.CodeID);
MapModelToCode(codeTagViewModel, code);
db.Code.Remove(code);
db.SaveChanges();
return View(codeTagViewModel);
}
return RedirectToAction("Index");
}
そして、編集ビューに2つのボタンがあります。
<p>
<input type="submit" value="Save" />
</p>
<p>
<input type="submit" value="Delete" />
</p>
そして、私のビューモデルは次のようになります。
public class CodeTagViewModel
{
public List<Tag> Tags { get; set; }
public List<Tag> SelectedTags { get; set; }
public int CodeID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime DateAdded { get; set; }
public DateTime LastUpdated { get; set; }
public string Project { get; set; }
public string CMS { get; set; }
public int DotNetVersion { get; set; }
public string Dependencies { get; set; }
public string Author { get; set; }
public string CodeFile { get; set; }
public string TFSLocation { get; set; }
}
現時点では、削除ボタンは何も実行しておらず、コードにまったくヒットしていません。
私はMVCを初めて使用し、MVCがすべての背景情報をどのように処理するかを理解しようとしているので、助けていただければ幸いです。
編集:私はルーティングの側面も調べて、次のように入力しました:
//
// POST: /Code/Edit/5
削除機能(編集用のものと同じ)の上にありますが、まだ何もありません。