Вызов действия из представления MVC

#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 не позволял мне напрямую обращаться к этому методу. Его удаление устранило мою проблему.