マスター ページ 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 %>
このコードには 2 つの問題があります。
呼び出した後
return PartialView("LogOn")
、「IControllerFactory 'UI.Services.ControllerFactory' は名前 'default.aspx' のコントローラーを返しませんでした」という例外が発生します。この問題は、「default.aspx」のルーティングを追加することで解決されます。しかし、なぜ私が呼び出すときに要求が "default.aspx" に行くのreturn PartialView(..)
ですか? (私はVS Webサーバーを使用しています)ユーザーが正常に認証され、null 以外の値が次の行の PartialView に渡された場合でも、LogOn.ascx 内で null 参照例外が発生します。
ユーザーが LogOn.ascx に渡されない理由を知っている人はいますか? ありがとう