Html 无法在Razor页面[ASP.NET MVC]上触发控制器事件

Html 无法在Razor页面[ASP.NET MVC]上触发控制器事件,html,asp.net,asp.net-mvc,asp.net-core,Html,Asp.net,Asp.net Mvc,Asp.net Core,我正在学习ASP.net,我正在使用razor页面。 我正在尝试将按钮连接到控制器,但当我单击按钮时,它只是刷新页面 Accounting.cshtml: @using (Html.BeginForm("LogOff", "LogOut", FormMethod.Post)) { <a class="logoutLblPos"> <input ty

我正在学习ASP.net,我正在使用razor页面。 我正在尝试将按钮连接到控制器,但当我单击按钮时,它只是刷新页面

Accounting.cshtml:

@using (Html.BeginForm("LogOff", "LogOut", FormMethod.Post))
        {
            <a class="logoutLblPos">
                <input type="submit" id="logoutbtn" value="LogOff" asp-controller="LogOutController">
            </a>
        }
@using (Html.BeginForm("LogOff", "Logout", FormMethod.Post))
{
<a class="logoutLblPos">
    <input type="submit" id="logoutbtn" value="LogOff">
</a>
}
@使用(Html.BeginForm(“注销”、“注销”、FormMethod.Post))
{
}
LogoutController.cs:

public class LogoutController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpGet]
    public async Task<IActionResult> LogOff()
    {
        FormsAuthentication.SignOut();
        System.Web.HttpContext.Current.Session.Clear();
        System.Web.HttpContext.Current.Session.Abandon();
        System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
        return RedirectToPage("Index");
    }
}
public类LogoutController:Controller
{
公共行动结果索引()
{
返回视图();
}
[HttpGet]
公共异步任务注销()
{
FormsAuthentication.SignOut();
System.Web.HttpContext.Current.Session.Clear();
System.Web.HttpContext.Current.Session.about();
System.Web.HttpContext.Current.Response.Cookies.Add(新的HttpCookie(“ASP.NET_SessionId”);
返回至Topage(“索引”);
}
}
我做错了什么?整个下午我都在试图弄清楚它为什么不起作用,我在谷歌上搜索了很多。 请你也解释一下

PS:我已经在尝试[HttpGet]和[HttpPost]


谢谢。

在注销控制器中将注销属性更改为[HttpPost],并在Accounting.cshtml中删除:asp controller=“LogoutController”还可以尝试在Html.beginnot中重命名注销。。。注销
RedirectToPage
Razor Pages
中的语法,
Razor Pages
是Asp.net核心中的一个应用程序

您的项目看起来完全是一个
MVC
项目,因为
Razor页面
不包含
Controller

有关
剃须刀页面的详细说明,请参见

您可以按如下方式修改代码,以使应用程序正常工作:

Accounting.cshtml:

@using (Html.BeginForm("LogOff", "LogOut", FormMethod.Post))
        {
            <a class="logoutLblPos">
                <input type="submit" id="logoutbtn" value="LogOff" asp-controller="LogOutController">
            </a>
        }
@using (Html.BeginForm("LogOff", "Logout", FormMethod.Post))
{
<a class="logoutLblPos">
    <input type="submit" id="logoutbtn" value="LogOff">
</a>
}
结果:

请注意,在注销方法中,您正在重定向到Index,因此请确保在注销文件夹下的视图中有一个名为Index.cshtml的html页面。您好,谢谢!我只是按照你的建议试了一下,但没用。我像你一样在“{”上设置了一个断点,但它甚至没有调用函数注销。删除视图中的
asp controller=“LogOutController”
代码,并且
LogOff
操作必须是
[HttpPost]
。如果仍然存在问题,你可以与我们共享你的项目结构。你好@Michael,有关于这个案例的更新吗?