【问题标题】:asp.net mvc 4 calling method from controller by buttonasp.net mvc 4 通过按钮从控制器调用方法
【发布时间】:2013-04-17 15:43:16
【问题描述】:

在我的控制器中我有类 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>

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

【问题讨论】:

    标签: asp.net-mvc button asp.net-mvc-4 controllers


    【解决方案1】:

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

    action="Controllers/AccountController"
    

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

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

    action="Account/LogOff"
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        表单操作应该是/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>
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-21
          相关资源
          最近更新 更多