【问题标题】:ASP MVC3 Looping through multiple tables not held within your modelASP MVC3 循环遍历模型中未包含的多个表
【发布时间】:2012-01-19 07:13:01
【问题描述】:

我是 ASP MVC 的新手,有一个关于访问不属于您的 @model 的其他表中的数据的快速问题。

例子:

现在我有两个表,我称它们为 table1 和 table2。

我将 table1 从控制器传递到视图,然后通过它执行 foreach 循环以输出其内容。

在 table1 中,我引用了 table2,因此我可以访问 table2 中的字段。我也想要遍历 table2,但我无法这样做,因为我输出到模型的唯一数据是 table1 的内容,所以虽然我可以访问 T2 的数据,但我无法访问信息,例如它有多少行。

【问题讨论】:

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


    【解决方案1】:

    您可以 (1) 创建一个新的“视图模型”,其中包含两个表(作为我们的属性),或者 (2) 在您的控制器中,您可以将第二个表放入 ViewData 字典中,然后检索它在你看来。

    第二个选项更快更容易,但由于这是一个很常见的问题,你最好习惯使用视图模型。

    (1) 这是一个示例视图模型:

    public class MyViewModel {
        public SomeDataTable table1 {get; set;}
        public SomeDataTable table2 {get; set;}
    }
    

    (2)ViewData字典的使用方法如下:

    // Controller code (store the table in ViewData):
    SomeDataTable table2 = ...;
    ViewData["table2"] = table2;
    
    // View code (retrieve the table from ViewData):
    <% var table2 = (SomeDataTable)ViewData["table2"]; %>
    

    【讨论】:

    • 啊,我明白了,谢谢!我一直在考虑将内容传递到 ViewData 字典中,但我不太确定如何使用表格。我已经让它传递字符串和列表,但是当我尝试传递一个 DbSet 时,我不确定如何处理它并遍历它的内容。任何建议将不胜感激:)
    • 我添加了ViewData 方法的示例。通常,Controller 负责创建正确的 Model,Model 负责从数据库中获取正确的数据,并且它应该尝试将这些数据加载到 View 使用的简单对象(如 List&lt;&gt;)中。有关更多信息,您应该查看Fat Model, Skinny Controller 模式,我强烈推荐它。
    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2020-05-03
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多