gpt4 book ai didi

c# - 一个 View 中的 MVC 多个模型

转载 作者:太空狗 更新时间:2023-10-29 20:02:43 25 4
gpt4 key购买 nike

我想在一个 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>();
}
}

和家庭 Controller

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 用于模型中的项目,如链接。谢谢。

最佳答案

您应该按如下方式创建 View 模型:

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; }
}

然后从您的 Controller 根据您的要求填充它们,例如:

   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);
}

然后将 View 中的模型更改为 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.

关于c# - 一个 View 中的 MVC 多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com