0

SimpleMemberShip を使用しています。これはデフォルトの UserProfile モデルです。

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

複数のテーブルにまたがるデータベースからすべてのユーザーの詳細を取得するモデルを作成したいと考えています。

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

public int RoleId { get; set; }
public string RoleName { get; set; }

[ReadOnly(true)]
public DateTime CreateDate { get; set; }
public DateTime PasswordChangedDate { get; set; }
}

現在、それは不可能のようです。サイトの管理者アクセス用に WebGrid を埋めようとしています。何らかの方法で実行できると確信していますが、間違った方法で行っている可能性があります。

これは私のコントローラーです:

public ActionResult DashBoard()
{
using (var context = new AppContext())
{
return View(context.GetUserDetails.ToList());
}
}

これは私のコンテキストプロパティです:

// Account Model DB Set...
public DbSet<GetUserDetail> GetUserDetails { get; set; }

UserProfile をモデル ソースとして指定すると、WebGrid が機能します。

@model List<myApp.Models.UserProfile>

しかし、これは機能しません:

@model List<myApp.Models.GetUserDetail>

既に実装されている複数のテーブルにまたがるカスタム モデルを実装することは可能ですか?

ありがとうございました。

4

3 に答える 3

3

エンティティを取得してビューに送信するには、dataContext に対して手動でクエリを記述する必要があります。必要なすべてのプロパティを持つ ViewModel を作成する

using (var context = new AppContext())
{
    var userDetailsViewModels = new UserDetailsViewModel
    return View(context.GetUserDetails
                       .Join(dataContext.SomeOtherTable, 
                             u => u.Ut, o => o.UserId, 
                             (u,o) => new UserDetailsViewModel { Name = u.Name, CreatinnDate = o.CreationDate }
                            )
               );
}
于 2013-09-13T10:05:28.773 に答える
0

カスタム モデルについて知りたい場合は、ViewModel を参照してください。mvc のビューモデルとは

于 2013-09-13T10:02:42.473 に答える