Выполнение RedirectToAction
с вызовом Ajax не приведет к перенаправлению пользователя куда-либо, потому что вы не задействуете жизненный цикл по умолчанию для полного пост-обновления / обновления страницы, вы делаете только побочный вызов через ajax, что эффективно действует независимо от остальной части веб-страницы.
Я бы сказал, что есть 3 стандартных варианта:
Вместо этого вы можете вернуть json с анонимным объектом, и в случае успешного вызова ajax принудительно обновите страницу с помощью javascript, изменив свойство window.href
.
В случае успешного вызова ajax вы можете использовать javascript, чтобы удалить HTML-код, представляющий объект, который вы только что удалили.
$.ajax({
type:"POST",
url: "@Url.Action("DeleteFavorite", "Home")",
data: { favID: favID },
dataType: "json",
success: function (){
//window.href.replace("@Url.Action()") //I'm not sure on the syntax here off hand it's been a while since I've done this
//or
//use jquery/javascript to remove the html as in step 2.
}
})
Вы не можете использовать ajax и использовать обычную форму сообщения, которая отправляет страницу обратно на сервер в обычном сообщении, и ваш текущий код контроллера будет работать как есть.
Это можно сделать с помощью помощника по HTML для форм, если вы используете .net Framework, и помощника по тегам форм, если вы используете .net Core.
@using (Html.BeingForm("ActionName", "ControllerName", FormMethod.POST)
{
<button name="Action" value="@item.PrimaryKey" type="submit" >Delete</button>
}
or
<form asp-action="ActionName" asp-controller="ControllerName" >
<button name="Action" value="@item.PrimaryKey" type="submit" >Delete</button>
</form>
Если вы едете по маршруту № 3 и у вас есть список предметов, то вы можете посмотреть один из моих предыдущих ответов о привязке модели со списками.
Я бы посоветовал вам изучить каждый подход и решить, какой из них вы хотите реализовать, исходя из ощущения вашего веб-сайта, которого вы хотите достичь.
Надеюсь, это поможет вам в правильном направлении.