4

この投稿で説明したように、コントローラーから master.page にデータを渡すことができるようにするために、抽象基本コントローラー クラスを作成しました。この場合、データベースでユーザーを検索し、User.Identity.Name を照会します (ログインしている場合のみ)。

Userただし、この抽象基本クラスでは、プロパティが常にであることに気付きましたnull。これを機能させるにはどうすればよいですか?

どうもありがとう

4

5 に答える 5

7

パコが示唆したように、ビューデータは使用しようとするまで初期化されません。

代わりに 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;
    }
}
于 2009-10-30T15:55:53.300 に答える
3

ユーザーを使用するには、現在のページを取得する必要があります

HttpContext.Current.User.Identity.Name
于 2009-01-08T22:31:08.590 に答える
1

web.configで認証をWindowsに設定することにより、User.Identity.Nameでユーザーを取得できます。

于 2009-04-30T16:55:01.273 に答える
0

静的 Utlilites クラスで Page クラスを使用します。そのように;

ページ P = (ページ)HttpContext.Current.Handler;

そして、現在要求されているページの P オブジェクトを介してすべてのプロパティを取得できます..

于 2009-01-12T15:42:45.393 に答える
0

これを試しましたか: ControllerContext.HttpContext.Current.User.Identity.Name?

于 2009-01-12T20:16:07.387 に答える