1

MVC4にかみそりの.cshtmlビューがあり、userprofileクラスのフィールドを印刷したいと思います。User.Identity.Nameからユーザー名を取得できることは理解していますが、パーシャルで現在ログインしているユーザーの他のプロパティにアクセスする方法がわかりません。これをコントローラーで実行し、ビューで参照する必要がありますか?もしそうなら、すべてのビューで利用できるコントローラーがあるので、すべてのコントローラーでこの変数を設定していませんか?ビューのUserProfileモデルクラスで定義されている現在のユーザープロパティにアクセスする簡単な方法はありますか?いくつかのコンテキストを与えるため。私のモデルは...

 public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }

        //Added to round out requirements for site user profile
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Site { get; set; }
    }

ビューでFirstNameにアクセスする必要があります。これはすべてのページの部分的なページであるため、コントローラーで取得した場合は、すべてのコントローラーで実行する必要があります。

4

2 に答える 2

1

これは重要ではなく、機密性が高くなく、アプリケーションの安定性に影響を与えないため、セッション変数に入れることにしました。ログインまたは登録時のコントローラーで、セッション変数を...で設定しました。

var context = new UsersContext();
var curuser = context.UserProfiles.First(p => p.UserName == model.UserName);
Session["FName"] = curuser.FirstName;

これは、ProASP.NETMVCとこの投稿から入手しました。そして、私のRazorビューでは、この投稿から派生したものを使用しています。

@HttpContext.Current.Session["FName"].ToString()
于 2012-09-26T18:36:59.813 に答える
0

部分ビューを提供しているコントローラーアクションで、FirstNameをViewBagに配置します。
返したいプロパティが他にもある場合は、それらのビューモデルを作成し、コントローラーアクションでそれを返します。

于 2012-09-26T06:57:29.097 に答える