Asp.net mvc 如何在同一视图中使用2个模型
我想使用两个模型,Asp.net mvc 如何在同一视图中使用2个模型,asp.net-mvc,Asp.net Mvc,我想使用两个模型,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 Mo
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>
我还使用model_3
来包括model_1
和model_2
,但是@Html.Action(“VMenu”,“Layout”)中出现了一些问题。
(很抱歉我的英语不太好…model_1上是否有导航属性,可以为您提供相关的model_2?如果是这样,那么您只需要通过模型_1并填写导航模型_2。您可以在示例行中将其引用为类似于@n.model_2s.property
的内容。您不希望这样:
@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; }
}
公共类模型
{
公共IEnumerable FirstModel{get;set;}
公共IEnumerable SecondModel{get;set;}
}
(我想不出更好的名字了,你的模型名字并没有留下任何关于它们是什么的线索。)
然后在控制器操作中创建SomeCustomModel
的实例,填充其字段,并将其返回到视图。一般来说,您正在创建的是一个“复合对象”,它只是由其他对象组成
当然,这是假设您的模型彼此之间没有任何其他现有关系。(同样,这些名称没有提供任何线索。)如果它们提供了线索,也许有一个“父”对象已经有了“子”对象?可能model_1
包含类型为model_2
的属性,或者已经包含了model_2
实例的集合?这看起来很像ASP.NET MVC代码,但标签的随机分类说明了另一种情况。你能澄清一下吗?这与Python或多个移动平台到底有什么关系?-1对于很多标记,但它们都不相关(这看起来像ASP.NET MVC/Razor?),对于初学者来说,这是一个非常不清楚的问题。ignoredi尝试了它,但另一个问题是@foreach(Model.FirstModel中的var项)错误在于对象引用未设置为object@user2494355:什么没有实例化?在将模型传递到视图之前,如何构建模型?很可能您正试图在空列表中枚举。如果可能从未设置对象列表,那么默认情况下您希望将其实例化为空列表。在视图模型的构造函数中,只需将属性设置为空列表。。。。。。。。我的英语仍然有限,所以我不能很好地理解,但最后我做到了,非常感谢:)
@model ProjectFashion.Models.SomeCustomModel
public class SomeCustomModel
{
public IEnumerable<model_1> FirstModel { get; set; }
public IEnumerable<model_2> SecondModel { get; set; }
}