我想使用2个模型model_1
和model_2
(一个model_1
,许多model_2
)但在一个视图中我只能使用一个。
这是我的观点:
@model IEnumerable<ProjectFashion.Models.model_1>
@model IEnumerable<ProjectFashion.Models.model_2>
@{
ViewBag.Title = "VMenu";
}
<ul>
@foreach(var n in Model) {
<li class="dir">
<h6>@n.name</h6>
<ul>
@*I WANT TO GET model_2 which belongs to model_1*@
</ul>
</li>
}
</ul>
和我的_Layout.cshtml:
<!--vmenu-->
@Html.Action("VMenu", "Layout")
<!--vmenu-->
和我的LayoutController.cs:
ShopContent db = new ShopContent();
public ActionResult VMenu() {
return PartialView("_VMenu", db.model_1s);
}
我还使用model_3
来包含model_1
和model_2
,但@Html.Action("VMenu", "Layout")
中出现了一些问题。
(我对我不完美的英语感到抱歉......)
答案 0 :(得分:0)
model_1上是否有导航属性可以为您提供相关的model_2?如果是这样,那么您只需要在填写了导航模型_2的情况下传递model_1。您可以在示例行中将其引用为类似@n.model_2s.property
的内容。
答案 1 :(得分:0)
你不想要这个:
@model IEnumerable<ProjectFashion.Models.model_1>
@model IEnumerable<ProjectFashion.Models.model_2>
你想要这个:
@model ProjectFashion.Models.SomeCustomModel
您的自定义模型可以像这样简单:
public class SomeCustomModel
{
public IEnumerable<model_1> FirstModel { get; set; }
public IEnumerable<model_2> SecondModel { get; set; }
}
(我无法想出更好的名字,你的模型名称并没有真正留下任何关于它们的线索。)
然后在您的控制器操作中,您将创建一个SomeCustomModel
的实例,填充其字段,并将其返回到视图。一般而言,您正在创建的是一个“复合对象”,它只包含其他对象。
当然,这是假设您的模型彼此之间没有任何其他现有关系。 (同样,这些名字并没有提供任何线索。)如果他们这样做,也许有一个“父”对象已经有了“子”对象?也许model_1
包含model_2
类型的属性或model_2
个实例的集合?