我登录。ascx控制其位于主页的网站。主:

<% Html.RenderPartial("LogOn"); %>

这个控制含有形式与电子邮件地址和密码textboxed提交LoginController:

public class LoginController : Controller
{
     ...
    [HttpPost]
    public ActionResult Login(string email, string password)
    {
        if (this.userRepository.ExistByEmail(email) &&
            this.authenticationService.IsPasswordMatches(email, password))
        {
            var user = this.userRepository.GetByEmail(email);
            this.userSession.LogIn(user);
            return PartialView("LogOn", user);
        }
        return PartialView("LogOn");
    }
}

因此,如果用户为成功通过身份验证通过模型用户进入的登录的局部图(简化):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Core.Model.User>" %>
<%= this.Model.FirstName %>

我有2个问题,这个代号:

  1. 后叫 return PartialView("LogOn") 我获得例外"二'的用户界面。服务。ControllerFactory'没有返回一个控制器,用于名称为'默认。aspx'" 这个问题的解决是通过加入路由"默认。aspx")。但是为什么请求对"默认。aspx"当我打电话 return PartialView(..) ?(我采用VS网服务器)

  2. 我得到null参考异常内部登录。ascx即使是用户认证成功并非空值得通过,成PartialView上的下一行:

没有任何人有一个主意为什么要用户是不是通过入的登录。ascx?感谢

有帮助吗?

解决方案

我认为您的登录的形式是做一个标准的提交回服务器(即送整个网页),而不是一个阿贾克斯帖子?

如果是这种情况,那么你的行动结果的登陆行动应该是一个整体来看,不一部分-没页面的主机的部分。

在这个作为你已经增加了一个路线,为默认,现在,你不会真的穿的用户对象,部分因为你叫它自页:

<% Html.RenderPartial("LogOn"); %>

你会需要这个叫用户,这将意味着你需要增加用户的可视数据用或型号,你们回来,如果你不使用会员国提供商。

我假设你正在做一些检查中登录的局部检查,如果该请求是身份验证的其他检查,看看如果用户对象已经通过在因为大多您的电话到这个部分将可从主页而不通过在用户的目的,这将主要失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top