我有位于母版页 site.master 上的 LogOn.ascx 控件:
<% Html.RenderPartial("LogOn"); %>
此控件包含提交给 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");
}
}
因此,如果用户成功通过身份验证,我会将用户传递到 LogOn 部分视图模型(简化):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Core.Model.User>" %>
<%= this.Model.FirstName %>
这段代码有两个问题:
调用后
return PartialView("LogOn")
我得到异常“IControllerFactory 'UI.Services.ControllerFactory'没有返回名称为'default.aspx'的控制器”这个问题通过为“default.aspx”添加路由来解决。但是为什么我打电话时请求会转到“default.aspx”return PartialView(..)
?(我正在使用 VS 网络服务器)我在 LogOn.ascx 中得到空引用异常,即使用户已成功通过身份验证并且非空值在以下行被传递到 PartialView:
有谁知道为什么没有将用户传递到 LogOn.ascx 中?谢谢