Действие контроллера ASP.NET MVC 1.0 с такой же подписью - PullRequest
4 голосов
/ 02 февраля 2010

Так что в основном в моем классе UserController.cs у меня есть метод Index, который возвращает ActionResult для отображения панели мониторинга для пользователя.На этой странице находится кнопка HTML с типом отправки.Когда я нажимаю на эту кнопку, я хочу захватить ее на стороне сервера и выйти из системы.

Как я могу это сделать, поскольку я не передаю информацию обратно, а сигнатура метода в итоге остается той же.

Ответы [ 3 ]

5 голосов
/ 02 февраля 2010

Использовать ActionNameAttribute :

[AcceptVerbs(HttpVerbs.Get), ActionName("Index"), Authorize]
public ActionResult IndexGet()
{
    return View();
}

[AcceptVerbs(HttpVerbs.Post), ActionName("Index"), Authorize]
public ActionResult IndexPost()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}
2 голосов
/ 02 февраля 2010

Использование:

[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection values)
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}

Или

[Authorize]
[AcceptVerbs(HttpVerbs.Post), ActionName("Post")]
public ActionResult IndexPost()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}
1 голос
/ 02 февраля 2010

Как вы знаете, в C # у вас не может быть двух методов с одинаковым именем и одинаковыми аргументами в одном классе. Вы можете добавить какой-нибудь фиктивный параметр или я бы посоветовал вам переименовать второе действие в SignOut, которое кажется более семантически правильным и лучше отражает то, что на самом деле делает это действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...