为什么我的登录页面不继续重新加载而不尝试进行身份验证?

时间:2012-11-07 15:59:10

标签: c# asp.net asp.net-mvc login forms-authentication

在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,但后来永远不会调用OnAuthenticateOnLoggedInOnLoginError。那是为什么?

我正在使用MVC,点击“登录”按钮后会发生什么,我将被带回AccountController。这将返回Login.aspx视图,因此登录页面将被重新加载。

4 个答案:

答案 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重新编写了所有内容。 我不知道如何解决这个问题,我采取了完全不同的方法。