#javascript #ajax #model-view-controller
#javascript #ajax #модель-представление-контроллер
Вопрос:
Я пытаюсь вызвать ActionResult внутри контроллера в javascript.
У меня есть этот ActionResult в моем AdminController
.
[HttpPost]
public ActionResult Logout()
{
return RedirectToAction("Login", "Login");
}
Это мое Logout button
в AdminView.
<a class="navbar-link" id="logout" name="logout" href="#">
ログアウト
</a>
И попробуйте создать событие в JAVSCRIPT.
$("#logout").click(function () {
swal({
title: "ログアウト?",
text: "アカウントからサインアウトしますか?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willLogout) => {
if (willLogout) {
//swal("Poof! Your imaginary file has been deleted!", {
// icon: "success",
//});
$.ajax({
url: "/Admin/Logout",
type: 'POST',
success: function (result) {
document.location.reload(true);
},
error: function (result) {
}
});
}
});
});
Основная цель этого — перенаправить пользователя на страницу входа в систему с помощью контроллера.
Я попытался установить swal("Poof")...
внутри .then(willLogout)
, и это работает.
но когда я использую ajax для вызова ActionResult. Это не сработало.
Я видел консоль и, кажется, ничего не отображается.
Я не знаю, что я делаю не так.
Как я могу вызвать контроллер ActionResult
from в файл Javascript с Ajax
помощью call?
Комментарии:
1. Какую структуру вы используете?
2. @HugoElhaj-Lahsen ASP.NET MVC
Ответ №1:
Ну, чтобы помочь моим коллегам-новичкам. Это решение, с которым я справился.
Прежде всего, я узнал, что у каждого ActionResult должно быть представление (если я не ошибаюсь).
Итак, в моем AdminView.cshtml
случае я создаю скрытую кнопку.
<button type="submit" id="submitLogout" name="button" value="logout" hidden>logout</button>
После этого в моем JSFILE
Я удалил ajax. что в первую очередь неверно.
$("#logout").click(function () {
swal({
title: "ログアウト?",
text: "アカウントからサインアウトしますか?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((willLogout) => {
if (willLogout) {
$("#submitLogout").click();
}
});
});
Эта функция в javascript предназначена для запуска скрытой кнопки в .cshtml
и запуска ActionResult
в контроллере.
Кроме того, в моем контроллере. Это то, что я сказал, что у каждого ActionResult
должно быть представление.
public ActionResult AdminView(string button)
{
if (button == "logout")
{
FormsAuthentication.SignOut();
Session.RemoveAll();
Session.Abandon();
return RedirectToActionPermanent("Login", "Login");
}
else
{
if (!(Session["UserInfo"] is UserModel))
{
return RedirectToActionPermanent("Login", "Login");
}
else
{
return View();
}
}
}
Параметр string button
в ActionResult — это тот name of the button
, который вы хотите запустить. Если триггер выполнен успешно, он передаст значение кнопки в аргумент string button
.