#asp.net-mvc-3 #c#-4.0
#asp.net-mvc-3 #c #-4.0
Вопрос:
Я пытаюсь выяснить, как вызвать действие из представления MVC, а не вызывать URL-адрес представления.
У меня есть метод действия для выхода из системы в контроллере учетной записи:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SignOff()
{
authenticationService.SignOut();
return View("SignOff");
}
И я хотел бы вызвать его со страницы cshtml, вот так:
<li>@Html.Action("SignOff","Account")</li>
Список является частью выпадающего меню.
ActionLink не работает, потому что у меня нет страницы учетной записи / входа. Приведенный выше код возвращает следующее: «Ошибка при выполнении дочернего запроса для обработчика ‘System.Web.Mvc.HttpHandlerUtil ServerExecuteHttpHandlerAsyncWrapper'». ActionLink просто сообщает мне, что ресурс не существует.
Есть ли какой-либо способ сделать это? Я просто хочу, чтобы пользователи могли выбирать пункт «Выход» из меню, а затем приложение вызывало метод выхода из системы. Нужно ли мне использовать Ajax? Javascript? Я все еще экспериментирую. Спасибо!
РЕДАКТИРОВАТЬ: Хорошо, это был http.post, который удерживал меня от прямого вызова этого. Я избавился от атрибута acceptverbs и теперь могу вызывать метод напрямую.
Ответ №1:
Вы можете просто перенаправить на страницу входа в систему или на любую другую общедоступную страницу (домашнюю страницу).
return RedirectToAction("Login");
Комментарии:
1. Хорошо, итак, просто создайте страницу для ссылки и просто перенаправьте контроллер страницы на действие. Я предполагаю, что это означает, что нет способа напрямую ссылаться на действие из помощника HTML в представлении. Я попробую это сделать и проверю еще раз. Спасибо!
2. Как я уже говорил выше, атрибут httpverbs.post не позволял мне напрямую обращаться к этому методу. Его удаление устранило мою проблему.