Для отображения данных в представлении у вас есть два варианта. Одним из них является передача экземпляра класса Model в строго типизированное представление. Второй вариант - использовать ViewBag. В вашем случае, похоже, что вы делаете немного и того, и другого, но я бы рекомендовал использовать строго типизированный подход к представлению.
Представление будет иметь свойство Model
, которое представляет экземпляр типа класса, указанного в объявлении @Model
. В вашем коде вы используете класс контроллера, который не будет работать. Я переписал пример для использования DataSet
в качестве модели. Как вы видите, свойство Model
представления становится экземпляром класса System.Data.DataSet
и имеет все его свойства и методы.
View
@Model System.Data.DataSet;
foreach (DataRow row in Model.Rows)
{
@:row["id"] + " " + row["name"];
}
Контроллер
DataSet data = new DataSet();
modeldata getdata = new modeldata();
return View(getdata.readrows(data));
Edit:
Ниже приведен пример использования словаря в классе модели для хранения нескольких наборов данных. Затем вы можете изменить представление, чтобы использовать тип modeldata в качестве класса Model.
Модель
namespace Site.Models
{
class modeldata
{
public Dictionary<string, DataSet> DataSets { get; set; }
public static DataSet ReadRows(DataSet dataset)
{
//returns data from sql query.
}
}
}
View
@Model Site.Models.modeldata;
@foreach (System.Data.DataTable table in Model.DataSets["sampleData"].Tables)
{
foreach (System.Data.DataRow row in table.Rows)
{
@:row["id"] + " " + row["name"];
}
}
Контроллер
DataSet data = new DataSet();
modeldata getdata = new modeldata();
getdata.DataSets["sampleData"] = modeldata.ReadRows(data);
return View(getdata);