【发布时间】:2015-09-04 16:02:10
【问题描述】:
我想在一个视图中访问多个模型。我有 DAL 文件夹和 DbContext。
class CvContext : DbContext
{
public CvContext() : base("CvContext")
{
}
public DbSet<LinkModel> Links { get; set; }
public DbSet<AboutModel> Abouts { get; set; }
public DbSet<PortfolioModel> Portfolios { get; set; }
public DbSet<SkillModel> Skills { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
还有 HomeController
public class HomeController : Controller
{
private CvContext db = new CvContext();
public ActionResult Index()
{
return View(db.Links.ToList());
}
}
索引.cshtml
@model IEnumerable<MvcCv.Models.LinkModel>
<ul>
@foreach (var item in Model)
{
<li>
<a href="@Html.DisplayFor(modelItem => item.LinkUrl)">
@Html.DisplayFor(modelItem => item.LinkName)
<span class="icon"></span>
<span class="menu-icon">
<img src="@Url.Content(item.LinkImage)" alt="" />
</span>
</a>
</li>
}
</ul>
如何访问所有模型?我将 foreach 用于模型中的项目,如链接。谢谢。
【问题讨论】:
-
还有@Html.DisplayFor helper 是这个例子的好选择?
-
创建一个封装其他模型的 ViewModel...
-
喜欢 CvContext?但是在模型内部不是 DAL 对吗?
-
是的,不要传递你的 dal,创建一个有 4 个列表的类。从您的 DAL 中填充这些列表(在您的控制器操作方法中执行此操作)并将这个新类传递给您的视图......这是视图模型的概念......它是一个模型,但它包含所有和唯一的信息特定视图需要...
-
谢谢我会试试这个
标签: c# asp.net asp.net-mvc entity-framework razor