MVC 5中单视图中的多个模型

时间:2016-01-28 02:53:58

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

有人可以提供一个如何在一个视图中组合 15个模型的示例吗? 我不能使用元组因为元组仅在一个视图中支持4个模型...在5个剃刀语法不支持之后... 所以我使用Dictionary for List我可以通过Create view来完成,但我不能保存每个模型...

控制器创建视图中的

    public ActionResult Create()
    {
        try
        {            
             var model = new Dictionary<string, Model>()
            {
                { "table1", new validation.table1() },
                { "table2", new validation.table2() },
                { "table3", new validation.table3() },
                { "table4", new validation.table4()},
                { "table5", new validation.table5()},
                { "table6", new validation.table6()},
                { "table7", new validation.table7()},
                { "table8", new validation.table8()},
                { "table9", new validation.table9()},
                { "table10", new validation.table10()},
                { "table11", new validation.table11()},
                { "table12", new validation.table12()},
                { "table13", new validation.table13()},
                { "table14", new validation.table14() },
                { "table15", new validation.table15()}
            };
           return View(model);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

1 个答案:

答案 0 :(得分:0)

关键步骤是创建一个类来模拟您希望视图能够使用的内容,这是一种称为视图模型的类。在您的示例中,您要使用15个对象。我不确定你想要什么类型的对象&#34;表&#34;为此,我假设您的代码中有一个类Table,您可以根据自己的规格进行相应更改。然后,您的视图模型将包含15个Table类型的成员变量:

public class TableViewModel
{
    public Table Table1 { get; set; }
    public Table Table2 { get; set; }
    public Table Table3 { get; set; }
    public Table Table4 { get; set; }
    public Table Table5 { get; set; }
    public Table Table6 { get; set; }
    public Table Table7 { get; set; }
    public Table Table8 { get; set; }
    public Table Table9 { get; set; }
    public Table Table10 { get; set; }
    public Table Table11 { get; set; }
    public Table Table12 { get; set; }
    public Table Table13 { get; set; }
    public Table Table14 { get; set; }
    public Table Table15 { get; set; }
}

在您的控制器中,现在您的工作是创建和填充该视图模型的实例。我不确定你的桌面对象来自哪里,所以我只是说在我的例子中我有15个变量名为&#39; table1&#39;,&#39; table2&#39;等等:

public ActionResult Create()
{
    TableViewModel model = new TableViewModel()
    {
        Table1 = table1,
        Table2 = table2,
        Table3 = table3,
        // ...
        Table15 = table15
    };

    return View(model);
}

最后,在您的视图中,您需要做的就是强烈输入新视图模型的视图。

@model TableViewModel

// Perform work with tables; each can be referenced
// as Model.Table1, Model.Table2, and so on.

这就是全部!