ASP.NET MVC 4:通过按钮从控制器调用方法

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>

这个不起作用,有人知道问题出在哪里或者有其他简单的解决方法吗?
3个回答

5

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

action="Controllers/AccountController"

首先,你不需要指定Controllers/,因为框架会为你找到控制器。实际上,客户端/ URL /等不知道控制器“文件夹”的概念。你需要给它的是一个到特定操作方法的“路由”。
由于MVC框架知道控制器在哪里,你只需要告诉它哪个控制器和该控制器上的哪个操作方法即可。
action="Account/LogOff"

5

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

@using (Html.BeginForm("LogOff", "Account"))
{
    <button class="btn btn-inverse" title="Log out" type="submit">Log Off</button>
}

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>
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接