gpt4 book ai didi

c# - View 中的多个模型 ASP.NET MVC(部分 View 方法)

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:42 24 4
gpt4 key购买 nike

最近几天我学习了 ASP.NET MVC。当我在“主” View 中使用两个或多个模型时遇到问题。

模型一:

 public class PersonController : Controller
{
private Context ctx = new Context();
public IEnumerable<Employer> employersCol { get;set; }
// GET: Person]
public ActionResult Index()
{
employersCol = ctx.employers.ToList();
return View(ctx.persons.ToList());
}
}

模型二:

 public class EmployerController : Controller
{
private Context ctx = new Context();
// GET: Employer
public ActionResult Index()
{
return View(ctx.employers.ToList());
}
}

所以,现在在“主” View 中我要显示数据:

@foreach (var p in Model)
{
@Html.DisplayFor(m => p.firstName);
@Html.DisplayFor(m => p.lastName);
}
@Html.Partial("~/Views/Employer/_emp.cshtml")

但是 Visual Studio 说:

An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code

Additional information: The model item passed into the dictionary is of type 'System.Collections.Generic.List1[WebApplication7.Models.Person]',
but this dictionary requires a model item of type
'System.Collections.Generic.IEnumerable
1[WebApplication7.Models.Employer]'.

问题是:如何将类型传递给分部 View 。也许您更喜欢另一种方法。嗯..也许我必须使用 Ajax..但是如何呢?

最佳答案

默认情况下,Razor 会将页面模型传递给局部。因此,假设 _emp.cshtml View 的模型为 IEnumerable<Employee>而不是 IEnumerable<Person>那么你可以使用 @Html.Partial 的重载覆盖模型

@Html.Partial("~/Views/Employer/_emp.cshtml", Model.Cast<Employee>())

关于c# - View 中的多个模型 ASP.NET MVC(部分 View 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972784/

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