我使用的是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。但我需要能够访问这两个类中的所有元素。
如何将它们从控制器传递到视图。
具体来说,一旦我通过它们,我如何在视图中单独访问它们?
答案 0 :(得分:2)
您在问题的评论部分有答案:
从我读过的内容来看,我需要使用ViewModel类。
所以继续并定义一个包含必要信息的类。然后在您的控制器操作中填充此模型的属性并将其传递给视图。
例如,假设您想要从第一个上下文访问UserProfiles
而从第二个上下文访问ut_GMUTempData
:
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>
}