我有一个关于如何使用2个动作的问题,这些动作必须在包含2个提交按钮的视图中共享一个值。在“删除”视图中,我想要采取行动:删除此人或停用此人(停用意味着为其合同指定结束日期)。
这是我的提交按钮:
@using (Html.BeginForm()) {
<p>
<input type="submit" value="Delete"/>
<input type="submit" value="Desactivate" />
</p>
@Html.ActionLink("Back to List", "Index")
}
还有我的行动:
public ActionResult Delete(long id = 0)
{
Person person = db.Persons.Single(p => p.Id_Person == id);
if (person == null)
{
return HttpNotFound();
}
return View(person);
}
//
// POST: /Person/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(long id)
{
Person person = db.Persons.Single(p => p.Id_Person == id);
db.Persons.DeleteObject(person);
db.SaveChanges();
return RedirectToAction("Index");
}
[HttpPost]
public ActionResult Desactivate(long id)
{
Person person = db.Persons.Single(p => p.Id_Person == id);
person.EndDate = DateTime.Now;
db.Persons.Attach(person);
db.ObjectStateManager.ChangeObjectState(person, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index", "Person");
}
我尝试将我的提交按钮分成不同的形式,但它不起作用,这是正常的,因为我需要使用相同的ID进行删除操作和停用操作。
有什么想法吗?
答案 0 :(得分:0)
试试这个
@using (Html.BeginForm()) {
<p>
<input type="submit" class="delete" value="Delete"/>
<input type="submit" class="deactivate" value="Desactivate" />
</p>
@Html.ActionLink("Back to List", "Index")
}
<scirpt type="text/javascript">
$(function(){
$(".delete").click(function (){
$(this).parents("form").action = "ControllerName/DeleteConfirmed";
return true;
});
$(".deactivate").click(function (){
$(this).parents("form").action = "ControllerName/Desactivate";
return true;
});
});
</script>