代码之家  ›  专栏  ›  技术社区  ›  Prabhu

ASP.NET MVC 2+jquery lightbox+登录

  •  5
  • Prabhu  · 技术社区  · 15 年前

    我试图找到一个例子,说明如何将随ASP.NET MVC 2(帐户控制器和视图等)提供的标准登录框架转换为模式登录对话框系统,如Digg中的系统。

    搜索了几个小时后,我发现最接近的教程是: http://www.weirdlover.com/2010/05/20/mvc-render-partial-modal-pop-up-via-jquery-and-colorbox-demo/

    但是,我想对其进行一些修改,例如,如果存在验证错误,而不是将其显示在表单中(例如:<%:html.validationmessagefor(m=>m.username)%>),我想在页面顶部像twitter/digg一样滑下一个栏。我不知道如何利用现有的认证框架来访问javascript中的验证错误。

    任何帮助都将不胜感激。谢谢!另外,如果你知道除了我发布的教程以外还有其他好的教程,那就太好了…

    1 回复  |  直到 15 年前
        1
  •  1
  •   Paul Creasey    15 年前

    下面是accountcontroller.cs中的登录操作

    public ActionResult LogOn(LogOnModel model, bool rememberMe, string returnUrl)
            {
                if (ModelState.IsValid)
                {
                    if (MembershipService.ValidateUser(model.UserName, model.Password))
                    {
                        FormsService.SignIn(model.UserName, rememberMe);
                        if (!String.IsNullOrEmpty(returnUrl))
                        {
                            return Redirect(returnUrl);
                        }
                        else
                        {
                            return RedirectToAction("Index", "Home");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "The user name or password provided is incorrect.");
                    }
                }
    
                // If we got this far, something failed, redisplay form
                return View(model);
            }
    

    最终返回视图(模型)可以更改为返回不同的内容,可能类似以下内容:

    return PartialView("LogOnFailed",model);
    

    验证错误保存在modelstate中,modelstate是一个专门的模型验证错误字典,您可以对其进行迭代:

    foreach(var error in ModelState)
    {
        //do stuff
    }