0

ASP.NET MVC 4 を使用しています。

私はこのクラスを持っています:

namespace Attempt4.Models
{
    public class UsersModel : DbContext
    {
        public UsersModel()
            : base("name=UsersConnection")
        {
        }
       public DbSet<UserProfile> UserProfiles { get; set; }
       public DbSet<Roles> UserRoles { get; set; }
       public DbSet<UsersInRoles> UsersInUserRoles { get; set; }
    }
}

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

次に、別のクラスがあります。

public partial class FskWebInterfaceContext : DbContext
{
    public FskWebInterfaceContext()
        : base("name=FskWebInterfaceContext")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public DbSet<trigger_dest_assoc> trigger_dest_assoc { get; set; }
    public DbSet<ut_AccessLevel> ut_AccessLevel { get; set; }
    public DbSet<ut_Client> ut_Client { get; set; }
    public DbSet<ut_ContactID> ut_ContactID { get; set; }
    public DbSet<ut_destinations> ut_destinations { get; set; }
    public DbSet<ut_DeviceDescription> ut_DeviceDescription { get; set; }
    public DbSet<ut_DeviceType> ut_DeviceType { get; set; }
    public DbSet<ut_event_log> ut_event_log { get; set; }
    public DbSet<ut_GMUTempData> ut_GMUTempData { get; set; }
    public DbSet<ut_Triggers> ut_Triggers { get; set; }
    public DbSet<ut_User> ut_User { get; set; }
    public DbSet<ut_UserAPNdevices> ut_UserAPNdevices { get; set; }
    public DbSet<ut_UserClientLink> ut_UserClientLink { get; set; }
}

ここで、ビューからこれらのデータベース コンテキストの両方にアクセスできるようにする必要があります。UserProfileなどのモデルだけを通過させる方法を知っています。しかし、これら 2 つのクラスのすべての要素にアクセスできる必要があります。

それらをコントローラーからビューに渡すにはどうすればよいですか。

具体的には、それらを通過したら、ビューで個別にアクセスするにはどうすればよいですか?

4

1 に答える 1

2

質問のコメント セクションに答えがあります。

私が読んでいることから、ViewModel クラスを利用する必要があります。

それでは、必要な情報を含むクラスを定義してください。次に、コントローラー アクションでこのモデルのプロパティを設定し、ビューに渡します。

たとえばUserProfiles、最初のコンテキストとut_GMUTempData2 番目のコンテキストからアクセスしたいとします。

public class MyViewModel
{
    public IList<UserProfile> UserProfiles { get; set; }
    public IList<ut_GMUTempData> GMUTempData  { get; set; }
}

そしてコントローラーアクションで:

public ActionResult Index()
{
    using (var ctx1 = new UsersModel())
    using (var ctx2 = new FskWebInterfaceContext())
    {
        var model = new MyViewModel();
        model.UserProfiles = ctx1.UserProfiles.ToList();
        model.GMUTempData = ctx2.ut_GMUTempData.ToList();
        return View(model);
    }
}

これで、ビューがビュー モデルに強く型付けされ、両方のプロパティにアクセスできるようになりました。

@model MyViewModel
... you could use both @Model.UserProfiles and @Model.GMUTempData collections

アップデート:

コメント セクションで要求されたように、ビュー内のユーザー プロファイルをループする方法は次のとおりです。

@model MyViewModel
@foreach (var profile in Model.UserProfiles)
{
    <div>@profile.SomePropertyOfTheUserProfileClassThatYouWantToDisplayHere</div>
}
于 2013-07-16T06:41:43.343 に答える