6

在我的控制器中我有类 AccountController 并且在我有这个方法

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
    WebSecurity.Logout();
    return RedirectToAction("Index", "Home");
}

在我的视图中,我有带有正文的 cshtml 页面和这部分代码

<form class="float_left" action="Controllers/AccountController" method="post">
    <button class="btn btn-inverse" title="Log out" type="submit">Log   Off</button>
</form>

这不起作用,有人知道什么是问题或其他一些简单的解决方案吗?

4

3 回答 3

5

action属性指向错误的控制器操作。您的控制器操作被调用LogOff而不是AccountController. 您永远不应该手动构建<form>这样的元素,而始终使用为此目的设计的 html 助手:

@using (Html.BeginForm("LogOff", "Account"))
{
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button>
}
于 2013-04-17T15:48:09.180 回答
5

您在这里没有引用操作方法:

action="Controllers/AccountController"

对于初学者,您无需指定Controllers/,因为框架会为您找到控制器。实际上,客户端/URL/等不知道控制器“文件夹”的概念。你需要给它的是一条通往具体行动方法的“路线”。

由于 MVC 框架知道控制器在哪里,因此您只需告诉它哪个控制器以及该控制器上的哪个操作方法:

action="Account/LogOff"
于 2013-04-17T15:51:30.830 回答
0

表单动作可能应该是/Account/LogOff

< form class="float_left" action="/Account/Logoff" method="post">
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button>
</form>

尝试将其放入.cshtml文件中:

@using (Html.BeginForm("LogOff", "Account"))
{
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button>
}
于 2013-04-17T15:48:49.867 回答