在我的 ASP.Net MVC 4 中,我想将多个数据表从控制器发送到视图。然后将在该视图中迭代这些数据表。我该怎么做?我是 mvc 世界的新手。
谢谢你的期待。
更新-我知道如何将单个数据表发送到视图并进行迭代。但是当涉及多个表时,我需要知道该技术。
更新-我的观点是部分观点。
在我的 ASP.Net MVC 4 中,我想将多个数据表从控制器发送到视图。然后将在该视图中迭代这些数据表。我该怎么做?我是 mvc 世界的新手。
谢谢你的期待。
更新-我知道如何将单个数据表发送到视图并进行迭代。但是当涉及多个表时,我需要知道该技术。
更新-我的观点是部分观点。
使用模型来表示数据是更好的做法,并且被推荐。这就是 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
}
}
如果您可以显示一些您当前正在使用的代码,那就太好了。
每当您在 MVC 中创建视图时,都会将模型/视图模型绑定到该视图。考虑到您的需求,您需要首先创建相应数据表的视图模型/模型,将数据表中的数据绑定到相应模型/视图模型的列表中,然后将它们传递到视图中。为了迭代多个数据表,您需要使用 diff 的部分视图。楷模。)
最好的方法是创建一个将充当您的 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,我猜很简单:)。