Объедините детали и удалите представления ASP.Net MVC 5

В настоящее время у меня есть отдельные представления и действия контроллера для моих данных и методов удаления. Я хотел бы разместить кнопку удаления в подробном представлении, чтобы пользователю не нужно было нажимать кнопку удаления, а затем снова удалять, когда они находятся в представлении удаления. В большинстве случаев я использую метод удаления "get" и использование помощника 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!");
    }
}

К сожалению, это возвращает представление ВНУТРИ текущего представления сведений:

введите описание изображения здесь

Я не знаю, имеет ли это смысл или нет.

1 ответ

Решение

Поскольку ваш запрос основан на AJAX, вам нужно вернуть javascript для выполнения перенаправления - что-то вроде:

return JavaScript(string.format("window.location = '{0}'", Url.Action("Search")));

Должен делать то, что вы просите.

Другие вопросы по тегам