1

MVC4 アプリケーションがあり、Pluralsight ビデオ チュートリアルに従っています。

プロパティが追加された UserProfile テーブルがあり、うまく機能しています。

<Table("UserProfile")>
Public Class UserProfile
    <Key>
    <DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)>
    Public Property UserId As Integer
    Public Property UserName As String
    Public Property FullName As String
End Class

UserIdおよびUserNameデフォルトですが、追加FullNameして機能させました。新しいユーザーを作成すると、フルネームがFullNameデータベースのフィールドに配置されます。

FullNameRazor ビュー内からアクセスするにはどうすればよいですか?

セッション、ViewData、またはモデルを使用したくありません。実際、これをすべてのページに表示したいので、コントローラーを介してこれを行うことはオプションではありません。

@Profile.Item("FullName")or経由でアクセスしたかったのです@Profile.PropertyValues("FullName")が、Profile オブジェクトが空です。設定方法を教えてください。

プロファイル オブジェクトは空です.png

4

1 に答える 1

2

Phil Haack によるこの投稿をご覧ください。またはこれはdeveloqにあります

Profile オブジェクトをプロパティとして持つ、ビュー用の新しいベース ページを作成できます。

public abstract class ProfileWebViewPage<T> : System.Web.Mvc.WebViewPage
{
  public UserProfile Profile { get; set; }

  public override void InitHelpers()
  {
    base.InitHelpers();
    //Set your Profile here. 
  }
}

次に、webconfig (views フォルダー内) で基本タイプとして設定します。

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="MyProject.ProfileWebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

次に、次の方法で簡単にアクセスできます。

@Profile.FullName

編集

わかりました、申し訳ありませんが、あなたは情報を持っていると思い、あなたのページでその情報にアクセスする方法を探していました.

SimpleMembershipProvider を使用してカスタム プロファイル情報に (AFAIK) アクセスすることはできません。カスタムProfileProvider ( http://dotnetnsqlcorner.blogspot.co.nz/2012/05/implementing-custom-profile-in-aspnet.html )を調べる必要があると思います。 ASP.NET MVC )

または:

EF を使用してデータ アクセスを実行し、プロファイルに直接アクセスすることができます (UserProfile が下にある DB コンテキストを使用します)。

Profile = (new UsersContext()).UserProfiles.SingleOrDefault(u => u.UserName = User.Identity.Name)
于 2013-03-27T23:52:13.617 に答える