C# 结合详细信息和删除视图ASP.Net MVC 5

C# 结合详细信息和删除视图ASP.Net MVC 5,c#,asp.net-mvc,controller,actionresult,C#,Asp.net Mvc,Controller,Actionresult,对于我的详细信息和删除方法,我目前有单独的视图和控制器操作。我想将“删除”按钮放在“详细信息”视图上,这样用户就不必单击“删除”,然后在“删除”视图上再次单击“删除”。我通过没有“get”delete方法并在details视图中使用ajax.actionlink帮助程序来调用post方法实现了这一点: @Ajax.ActionLink("Delete", "Delete", new { id = Model.DepartmentId }, new AjaxOption

对于我的详细信息和删除方法,我目前有单独的视图和控制器操作。我想将“删除”按钮放在“详细信息”视图上,这样用户就不必单击“删除”,然后在“删除”视图上再次单击“删除”。我通过没有“get”delete方法并在details视图中使用ajax.actionlink帮助程序来调用post方法实现了这一点:

    @Ajax.ActionLink("Delete", "Delete", 
    new { id = Model.DepartmentId }, 
    new AjaxOptions { HttpMethod="POST", UpdateTargetId="output", Confirm= "Are you sure you want to delete this item?" }, 
    new { @class = "btn btn-danger" })
唯一的问题是当删除成功时,我想重定向到搜索视图。目前,我的删除控制器“post”方法如下:

//
// POST: /Department/Delete/5
[HttpPost]
//[ValidateAntiForgeryToken]
public ActionResult Delete(DepartmentViewModel vmNotUsed, int id = 0)
{
    if (id != 0)
    {
        // check to see if the department item is associated with an asset assignment
        bool InUseByAssetAssignment = AssetAssignmentService.ValueInUse(x => x.DepartmentId == id);

        if (InUseByAssetAssignment == false)
        {
            DepartmentService.DeleteDepartment(id);
            return RedirectToAction("Search");
        }
        else
        {
            return Content("<p style='color:#f00';>This department cannot be deleted because there are items associated with it.</p>");
        }
    }
    else
    {
        return Content("You must select a Department to delete!");
    }
}
//
//职位:/Department/Delete/5
[HttpPost]
//[ValidateAntiForgeryToken]
公共操作结果删除(DepartmentViewModel vmNotUsed,int id=0)
{
如果(id!=0)
{
//检查部门项目是否与资产分配关联
bool inusebyassetsetassignment=AssetAssignmentService.ValueInUse(x=>x.DepartmentId==id);
if(InUseByAssetAssignment==false)
{
部门服务。删除部门(id);
返回重定向到操作(“搜索”);
}
其他的
{
返回内容(“

此部门无法删除,因为存在与之关联的项目。

”; } } 其他的 { 返回内容(“您必须选择要删除的部门!”); } }
不幸的是,它返回当前详细信息视图中的视图:


我不知道这是否有意义。

由于您的请求是基于AJAX的,您需要返回javascript来执行重定向-类似于:

return JavaScript(string.format("window.location = '{0}'", Url.Action("Search")));
你应该按你的要求去做