C# 结合详细信息和删除视图ASP.Net MVC 5
对于我的详细信息和删除方法,我目前有单独的视图和控制器操作。我想将“删除”按钮放在“详细信息”视图上,这样用户就不必单击“删除”,然后在“删除”视图上再次单击“删除”。我通过没有“get”delete方法并在details视图中使用ajax.actionlink帮助程序来调用post方法实现了这一点: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
@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")));
你应该按你的要求去做