この投稿で説明したように、コントローラーから master.page にデータを渡すことができるようにするために、抽象基本コントローラー クラスを作成しました。この場合、データベースでユーザーを検索し、User.Identity.Name を照会します (ログインしている場合のみ)。
User
ただし、この抽象基本クラスでは、プロパティが常にであることに気付きましたnull
。これを機能させるにはどうすればよいですか?
どうもありがとう
この投稿で説明したように、コントローラーから master.page にデータを渡すことができるようにするために、抽象基本コントローラー クラスを作成しました。この場合、データベースでユーザーを検索し、User.Identity.Name を照会します (ログインしている場合のみ)。
User
ただし、この抽象基本クラスでは、プロパティが常にであることに気付きましたnull
。これを機能させるにはどうすればよいですか?
どうもありがとう
パコが示唆したように、ビューデータは使用しようとするまで初期化されません。
代わりに Controller.Initialize() をオーバーライドしてみてください。
public abstract class ApplicationController : Controller
{
private IUserRepository _repUser;
public ApplicationController()
{
}
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
_repUser = RepositoryFactory.getUserRepository();
var loggedInUser = _repUser.FindById(User.Identity.Name);
ViewData["LoggedInUser"] = loggedInUser;
}
}
ユーザーを使用するには、現在のページを取得する必要があります
HttpContext.Current.User.Identity.Name
web.configで認証をWindowsに設定することにより、User.Identity.Nameでユーザーを取得できます。
静的 Utlilites クラスで Page クラスを使用します。そのように;
ページ P = (ページ)HttpContext.Current.Handler;
そして、現在要求されているページの P オブジェクトを介してすべてのプロパティを取得できます..
これを試しましたか: ControllerContext.HttpContext.Current.User.Identity.Name?