C# MVC\u layout.cshtml文件中的全局操作方法

C# MVC\u layout.cshtml文件中的全局操作方法,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在将一个WebForms ASP.NET项目移植到MVC,但我不确定MVC的工作方式 在WebForms项目中,有一个带有注销按钮的母版页,它显示在每个页面的右上角 <div class="userTableElementLogout"> <asp:Button ID="LogOffButton" runat="server" OnClick="LogOffButton_Clicked" Text="LOG OFF" CausesValidation="false"

我正在将一个WebForms ASP.NET项目移植到MVC,但我不确定MVC的工作方式

在WebForms项目中,有一个带有注销按钮的母版页,它显示在每个页面的右上角

<div class="userTableElementLogout">
    <asp:Button ID="LogOffButton" runat="server" OnClick="LogOffButton_Clicked" Text="LOG OFF" CausesValidation="false" />
</div>
因此,在我的MVC项目中,_layout.cshtml文件中,我有以下内容:

<div class="userTableElementLogout">
    <input type="submit" name="ctl01$LogOffButton" value="LOG OFF" id="log-off-button">
</div>

我有几个带有视图的控制器,它们使用_layout.cshtml文件


如何编写一个方法/操作来处理该按钮的点击

您可以将此submit按钮保存在表单标记中,表单标记将被提交到您的某个操作方法中,您可以在其中执行代码以执行注销逻辑

@using(Html.BeginForm("Logoff","Account"))
{
   <div class="userTableElementLogout">
      <input type="submit"  value="LOG OFF" id="log-off-button">
   </div>
}
@使用(Html.BeginForm(“注销”、“帐户”))
{
}
假设您在
帐户
控制器中有一个HttpPost
注销
操作方法,该方法具有上述注销逻辑

如果您愿意,您还可以简单地保留一个
锚定
标记,该标记也会向您的一个HttpGet操作方法(注销)发出GET请求

  • 您应该在标题中有您的注销按钮

  • 使用jQuery或
    Html.ActionLink
    在按钮和控制器/操作方法之间建立链接,这里应该是Account/logoff

  • 在布局中有一个名为
    \u LoginPartial
    的局部视图,该视图将有一个按钮或类似于

    <ul class="nav navbar-nav navbar-right">
        <li id="logOff" class="image-style">
            <img class="lhs" style="max-height: 30px; max-width: 30px;" src="@Url.Content("~/Images/logOut.png")" alt="Logout" title="Logout" />
        </li>
    </ul>  
    
  • 更好的方法是使用jQuery,它可以让您进行更多的定制

    我假设您的帐户控制器是您放置登录/注销逻辑的地方,索引方法是登录页面

    <ul class="nav navbar-nav navbar-right">
        <li id="logOff" class="image-style">
            <img class="lhs" style="max-height: 30px; max-width: 30px;" src="@Url.Content("~/Images/logOut.png")" alt="Logout" title="Logout" />
        </li>
    </ul>  
    
    public ActionResult LogOff() {
        this.AuthenticationManager.SignOut();
        // your logout logic here
        return this.RedirectToAction("Index", "Account");
    }