0

我正在编写一个 ASP.NET 应用程序,它要求用户使用外部 API 登录到服务器。如果用户输入无效的登录凭据,我希望用户使用 Ajax 获得即时反馈。

我的观点

@using (Ajax.BeginForm("Login", "Login", null, new { id = "login-form" }))
        { 
            <label>
                User Name: @Html.TextBox("userName", "", new { @class = "input" })
            </label>
            <label>
                Password: @Html.Password("password", "", new { @class = "input" })
            </label>
            <input type="submit" class="button" value="Login" />
            <div id="login-validate">Invalid Login!</div>
        }

我的控制器

    public ActionResult Login(string userName, string password)
    {
        // Returns true if connection is valid
        if (RepoConnection.verifyAndBindConn(userName, password))
        {
            return Index(); // Redirect to home page, logged in as new user
        }
        else
        {
            return null; // TODO: Don't change view
        }
    }

有没有办法让控制器不切换视图,而是调用 jQuery 函数来显示错误消息?

4

1 回答 1

1

只需返回View()您的 else 块。它将重新显示登录页面。

    if (RepoConnection.verifyAndBindConn(userName, password))
    {
        return Index(); // Redirect to home page, logged in as new user
    }
    else
    {
        return View(); // TODO: Don't change view
    }

如果您真的希望它是 ajaxy,您将不得不更改您的代码以不使用表单/提交按钮,而是通过 ajax 发送您的登录凭据,编写会话 cookie,并在 js 代码中处理重定向。

于 2012-06-05T20:23:25.623 回答