-2

我想使用 2 个模型,model_1并且model_2(one model_1, many 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_1model_2但在@Html.Action("VMenu", "Layout"). (对不起我不完美的英语……)

4

2 回答 2

0

model_1 上是否有提供相关 model_2 的导航属性?如果是这样,那么您只需要传递填充了导航模型_2 的模型_1。您可以在示例行中将其引用为类似@n.model_2s.property.

于 2013-06-17T17:54:02.180 回答
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

于 2013-06-17T17:54:23.503 回答