【问题标题】:Sending more than one model to view MVC 4发送多个模型以查看 MVC 4
【发布时间】:2014-06-03 17:19:38
【问题描述】:

我有两个模型类,每个都是数据库中的一个表。一种型号称为“衣服”,另一种型号称为“鞋子”。

我想在同一个 razor 视图中显示每个表的内容,但 MVC 只允许我将一个模型发送到视图。

@model IEnumerable<Test.Models.Clothes>

有没有办法将多个模型发送到剃刀视图?

如果不是,在已经将另一个模型传递给它的视图中显示另一个模型的内容的正常方法是什么。谢谢你的建议。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 razor


    【解决方案1】:

    要么创建一个视图模型类,该类将两个类都作为其对象。然后它将是类型安全的。

    public class ViewModelForDisplay
    {
           public Clothes Clothes {get; set;}
           public Shoes Shoes {get; set;}
    }
    
    //on Controller
    Clothes objClothes = GetClothes();
    Shoes objShoes = GetShoes();
    
    ViewModelForDisplay objViewModel = new ViewModelForDisplay() {Clothes = objClothes, Shoes= objShoes }
    

    另一种简单的方法是使用 ViewBag。它使用添加到 C# 4 中的动态功能。它允许对象动态地添加属性。它也是类型安全的

    ViewBag.Shoes= objShoes ;
    ViewBag.Clothes= objClothes ;
    

    您还可以使用 ViewData 将对象传递给 html。但这不是类型安全的。它需要铸造

    ViewData["Clothes "] = objClothes ;
    ViewData["Shoes "] = objShoes ;
    

    【讨论】:

    • 视图模型是首选方法。
    • 此外,将模型(数据库对象)传递给视图并不是一个好主意。仅使用必填字段创建 ViewModel
    • 感谢重播和提供代码示例,是否有机会在控制器上进行扩展?它对我不起作用。
    【解决方案2】:

    创建你自己的类,也就是 View Model,并让它由两个模型组成。

    【讨论】:

      【解决方案3】:

      我发现这篇文章很有趣:

      https://workspaces.codeproject.com/user-10826818/using-multiple-models-in-a-view-in-asp-net-mvc-4

      它提供了将多个模型发送到视图的不同方式:

      • 查看数据
      • 查看包
      • 部分视图
      • 临时数据
      • 视图模型
      • 元组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多