在Controllers / AccountController.cs中:
public class AccountController : Controller
{
//
// GET: /Account/Login
public ActionResult Login()
{
return View();
}
...
}
在web.config中:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" defaultUrl="~/Home/Index" name=".ASPXFORMSAUTH"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
在Views / Account / Login.aspx中:
<script runat="server" type="text/C#">
protected void Page_Load(object sender, EventArgs e) {...}
protected void OnAuthenticate(object sender, AuthenticateEventArgs e) {...}
protected void OnLoggedIn(object sender, EventArgs e){...}
protected void OnLoginError(object sender, EventArgs e){...}
</script>
...
<asp:Login ID="login1" runat="server"
DestinationPageUrl="~/Views/Home/Index.aspx"
OnAuthenticate="OnAuthenticate"
OnLoggedIn="OnLoggedIn"
OnLoginError="OnLoginError">
...
<asp:Button ID="loginButton" runat="server" CommandName="Login1" Text="Login" ValidationGroup="login1" TabIndex="4" />
...
</asp:Login>
调用 Page_Load
,但后来永远不会调用OnAuthenticate
,OnLoggedIn
和OnLoginError
。那是为什么?
我正在使用MVC,点击“登录”按钮后会发生什么,我将被带回AccountController。这将返回Login.aspx视图,因此登录页面将被重新加载。
答案 0 :(得分:2)
您正在将Web窗体与MVC混合 - 您不能这样做。
答案 1 :(得分:1)
您已使用text/javascript
代码将该代码标记为text/c#
而非runat=server
。
答案 2 :(得分:1)
您的错误脚本类型应为type =“text / C#”
更改强>
<script runat="server" type="text/javascript">
要强>
<script runat="server" type="text/C#">
答案 3 :(得分:0)
我最终使用Razor而不是ASPX重新编写了所有内容。 我不知道如何解决这个问题,我采取了完全不同的方法。