2013-03-14 93 views
0

我有一个关于如何使用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

变化形式的尊重上点击按钮的动作,你可以把它完成。 – 2013-03-14 10:21:49

+0

感谢您的回答,但我没有真正了解您的意思。我应该在视图中操作我的更改吗? – Traffy 2013-03-14 10:26:40

+0

以及只是从视图中更改表单的动作,并且休息已经实现。还有一件事你可以做的就是删除停用动作,取一个隐藏的输入字段,它将跟踪哪个按钮被点击,并根据该值执行控制器中的操作..但我提出的解决方案将有效地工作您。因此更好地去与现有的 – 2013-03-14 10:37:41

回答

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> 
+0

不幸的是它没有工作......当我点击取消激活按钮时,它删除了我的人。 – Traffy 2013-03-14 10:37:58