MVC _layout.cshtml文件中的全局操作方法

时间:2017-01-19 22:40:00

标签: c# asp.net asp.net-mvc asp.net-mvc-4

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

在WebForms项目中,有一个带有注销按钮的主页面,它出现在每个页面的右上角。

router.get('/', function(req, res, next) {
    //req.body object contains your element
    var canvas = req.body.myCanvas;
    //...
    res.render('index', { title: 'Express' });
});

在Masterpage代码隐藏文件中:

<div class="userTableElementLogout">
    <asp:Button ID="LogOffButton" runat="server" OnClick="LogOffButton_Clicked" Text="LOG OFF" CausesValidation="false" />
</div>

所以在我的MVC项目_layout.cshtml文件中,我有这个:

protected void LogOffButton_Clicked(object sender, EventArgs e)
{
    // Logout logic
}

我有几个控制器,其中包含使用_layout.cshtml文件的视图。

如何编写处理单击该按钮的方法/操作?

2 个答案:

答案 0 :(得分:1)

  1. 您应该在标题中注明。

  2. 使用jQuery或Html.ActionLink在您的按钮和控制器/操作方法之间建立链接,这里应该是帐户/注销

  3. 在布局中使用名为_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>  
    
  4. 现在,您可以使用ajax调用在Account控制器中调用您的注销方法。

  5. 在帐户控制器

    中创建此方法
    public ActionResult LogOff() {
        this.AuthenticationManager.SignOut();
        // your logout logic here
        return this.RedirectToAction("Index", "Account");
    }
    
  6. 更好的方法是使用jQuery,它可以让你有很多自定义。

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

答案 1 :(得分:0)

您可以将此提交按钮保留在表单标记内,该表单标记将提交给您的一种操作方法,您可以在其中执行代码以执行注销逻辑。

@using(Html.BeginForm("Logoff","Account"))
{
   <div class="userTableElementLogout">
      <input type="submit"  value="LOG OFF" id="log-off-button">
   </div>
}

假设您在Logoff控制器中有一个具有上述注销逻辑的HttpPost Account操作方法。

如果需要,您还可以简单地保留一个anchor标签,该标签也会对您的HttpGet操作方法(Logoff)执行GET请求。