1

在我的 ASP.Net MVC 4 中,我想将多个数据表从控制器发送到视图。然后将在该视图中迭代这些数据表。我该怎么做?我是 mvc 世界的新手。

谢谢你的期待。

更新-我知道如何将单个数据表发送到视图并进行迭代。但是当涉及多个表时,我需要知道该技术。

更新-我的观点是部分观点。

4

3 回答 3

1

使用模型来表示数据是更好的做法,并且被推荐。这就是 MVC 的重点。当然,您可以使用数据表,但为什么呢?

请记住,datatable 仅包含单个表数据。您要么有一个包含多个表的 DataSet,要么只有一个通用的数据表集合。

如果您使用的是数据集....

使用属性创建模型,然后遍历数据集中的数据表、每个表、每一行,并添加您为集合中的当前行/表创建的模型。最后,将该集合传递回视图。

遍历数据集中的表...

DataSet ds = this.GetDataSet();
            foreach (DataTable currentTable in ds.Tables)
            {
                foreach (DataRow currentRow in currentTable.Rows)
                {
                    // looping through each row within this datatable
// at this point, you need to then map the current row data to the Model. I'll let you deal with this
                }
            }

如果您可以显示一些您当前正在使用的代码,那就太好了。

于 2013-11-01T12:48:53.207 回答
0

每当您在 MVC 中创建视图时,都会将模型/视图模型绑定到该视图。考虑到您的需求,您需要首先创建相应数据表的视图模型/模型,将数据表中的数据绑定到相应模型/视图模型的列表中,然后将它们传递到视图中。为了迭代多个数据表,您需要使用 diff 的部分视图。楷模。)

于 2013-11-01T14:11:18.240 回答
0

最好的方法是创建一个将充当您的 ViewModel 的类(一个为您的视图提供服务并为视图提供所需数据的类),然后这个类可能由您需要的 N 个属性组成。

那么你需要在你的控制器中创建一个这个类的新对象,填写你的类属性(比如你想要的 4 个数据表)并将这个类对象发送到你的视图,这样你就可以轻松地遍历你的表。

例子:

public class MyDataViewModel()
{

  public DataTable FirstTable {get; set;}
  public DataTable SecondTable {get; set;}
  public DataTable ThirdTable {get; set;}
  public DataTable ForthTable {get; set;}
}

在控制器内部,创建一个新对象并在属性中填充数据

var myDataObject = new MyDataViewModel();
myDataObject.FirstTable = // your First Table  data ;
myDataObject.SecondTable = // your Second Table data ;
myDataObject.ThirdTable = // your Third Table  data ;
myDataObject.ForthTable = // your Forth Table  data ;

return view(myDataObject);

注意:您的最终表示将取决于您的情况,我的猜测是您不需要数据表,最好创建List<YOUR_OBJECT>将数据保存到您的视图中的数据表

更新:要创建List<YOUR_OBJECT>项目而不是 Datatables,您将修改 ViewModel 类属性List<YOUR_OBJECT>而不是 DataTables,我猜很简单:)。

于 2013-11-01T12:50:08.250 回答