1

在控制器/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,OnLoggedInOnLoginError从未被调用。这是为什么?

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

4

4 回答 4

2

您正在将 Web 表单与 MVC 混合使用——您不能这样做。

于 2012-11-07T17:14:12.290 回答
1

您已将该代码标记为text/javascript而不是text/c#使用runat=server标记。

于 2012-11-07T16:01:00.730 回答
1

你有错误的脚本类型应该是 type="text/C#"

改变

<script runat="server" type="text/javascript">

<script runat="server" type="text/C#">
于 2012-11-07T16:01:58.227 回答
0

我最终使用 Razor 而不是 ASPX 从头开始​​重写所有内容。我不知道如何解决这个问题中的问题,我采取了完全不同的方法。

于 2012-11-12T17:45:27.863 回答