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数据库的字段中。

如何FullName从 Razor 视图中访问?

我不想使用会话、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 中的基本类型(在视图文件夹中):

  <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

编辑

好的,抱歉,我以为你有这些信息,只是在寻找一种在你的页面上访问它的方法。

您不能(AFAIK)使用 SimpleMembershipProvider 访问自定义配置文件信息。我认为您需要查看自定义 ProfileProvider ( http://dotnetnsqlcorner.blogspot.co.nz/2012/05/implementing-custom-profile-in-aspnet.html ) 或使用 SqlProfileProvider (实施 Profile Provider in ASP.NET MVC )

或者:

您可以只使用 EF 进行数据访问以直接进入配置文件(使用数据库上下文 UserProfile 所在的任何内容:

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