我正在将一个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文件的视图。
如何编写处理单击该按钮的方法/操作?
答案 0 :(得分:1)
您应该在标题中注明。
使用jQuery或Html.ActionLink
在您的按钮和控制器/操作方法之间建立链接,这里应该是帐户/注销
在布局中使用名为_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>
现在,您可以使用ajax调用在Account控制器中调用您的注销方法。
在帐户控制器
中创建此方法public ActionResult LogOff() {
this.AuthenticationManager.SignOut();
// your logout logic here
return this.RedirectToAction("Index", "Account");
}
更好的方法是使用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请求。