我有位于母版页的Site.Master LogOn.ascx控制:ASP.Net MVC:问题PartialView
<% 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");
}
}
因此,如果用户被成功认证本人传递用户进入LogOn支持局部视图(简化的)的模型:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Core.Model.User>" %>
<%= this.Model.FirstName %>
我有2个问题与此代码:
调用
return PartialView("LogOn")
后,我得到的例外“的IControllerFactory‘UI.Services.ControllerFactory’没有为名称返回控制器‘Default.aspx的’” 这个问题通过添加“default.aspx”的路由来解决。但是,当我打电话给return PartialView(..)
时,为什么请求会转到“default.aspx”? (我使用VS web服务器)我得到空引用异常里面LogOn.ascx即使用户已成功通过身份验证和非空值传递到PartialView以下行:
有没有人有一个想法,为什么用户不会被传入LogOn.ascx? 谢谢
本,谢谢你的回复。你是对的 - 这是非ajax调用,并且在LogOn.ascx中有一个检查来确定当前的请求是否已通过身份验证(例如,我将其剥离)。 我从MVC开始,所以我可能会误解一些概念。所以我在'返回视图(“LogOn”,用户)上更改'返回PartialView(“LogOn”,用户)“' - 结果相同。 我没有明确表达您的观点:“您需要与用户调用<%Html.RenderPartial(”LogOn“);%>”。我认为视图共享其ViewData和模型与嵌套局部视图(如果局部视图没有自己的显式传递的视图数据)。或者我错了? – alex 2009-12-17 13:22:39