[英]MVC Multiple Models in One View
我想在一個視圖中訪問多個模型。 我有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());
}
}
Index.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 for item。 謝謝。
您應該創建一個視圖模型,如下所示:
public class FooViewModel
{
public IEnumerable<LinkModel> Links { get; set; }
public IEnumerable<AboutModel> Abouts { get; set; }
public IEnumerable<PortfolioModel> Portfolios { get; set; }
public IEnumerable<SkillModel> Skills { get; set; }
}
然后從您的控制器填充它們以滿足您的要求,例如:
public ActionResult Index()
{
var model = new FooViewModel();
model.Links = db.Links.ToList();
model.Abouts = db.Abouts.ToList();
model.Portfolios = db.Portfolios.ToList();
model.Skills = db.Skills.ToList();
return View(model);
}
然后將視圖中的模型更改為FooViewModel
並在那里提供所有屬性。
@model FooViewModel
<ul>
@foreach (var item in Model.Links)
{
<li>
@item
</li>
}
</ul>
<ul>
@foreach (var item in Model.Links)
{
<li>
@item
</li>
}
</ul>
// ....etc, obviously change the outputs as needed.
//suppose you have two Models
public class student
{
public int Id
public string Name{get;set;}
}
public class class
{
public int Id
public string Name{get;set;}
}
// Now combine these two class Model in single Model for example:
public class Mixmodel
{
public Student student {get;set;}
public Class class {get;set;}
}
//here is the Home controller of the Index view
@model projectName.MixModel
@foreach(var item in Model.class)
{
@html.displayfor(item.class.Name)
}
@foreach(var item in Model.student)
{
@html.displayfor(item.student.Name)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.