c# - 如何将 ADO.NET 数据集传递给 View

标签 c# sql-server asp.net-mvc database ado.net

我有一个遗留项目,我们正在慢慢迁移到 MVC,但有数百个 ADO.NET SQL DataSet 对象

我想将数据集保留在模型中并在 View 中访问它。这可能吗,或者有更好的方法吗?创建列表很困难,因为数据太多。我们最终会将 SQL 转换为实体,但不是现在。

示例:

型号:

 string query = "SELECT * FROM dbo.manf";
 SqlDataAdapter adapter = new SqlDataAdapter(query, conn);
 DataSet data = new DataSet();
 adapter.Fill(data, "manf");

查看:

@foreach (DataRow data in manf.Tables["manf"].Rows)
{
    @:manf["id"] + " " + manf["name"]);
}  

最佳答案

您可以将任何想要的对象传递给 View ,因此您的 Controller 代码应如下所示:

public ViewResult Index() 
{ 
    .... 
    return View(data); 
} 

你的观点:

@model System.Data.DataSet

@foreach (DataRow row in Model.Tables["manf"].Rows)    
{    
    @(row["id"] + " " + row["name"])
}  

传递的对象将存储在 View 通用基类的 Model 属性中,您可以使用 Model 来访问它。 @model定义了传递的对象的数据类型。

无论如何,任何代码都会被 HTML 编码,不需要 : 。如果您不想编码,则必须使用@Html.Raw(...)。

编辑:您只能将一个参数作为模型移动。如果您想使用多个对象,您可以定义一种新的数据类型(ViewModel),其中包含这两个对象的属性。对于窗口标题等简单对象,您可以使用 ViewBag。

ViewBag.Title = myTitle;

ViewBag 是 Controller 的动态属性,基本上是 ViewData 的包装器。

关于c# - 如何将 ADO.NET 数据集传递给 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727107/

相关文章:

android - 在数据库更改 Android 时得到通知

sql-server - 带有NULL参数的where查询

c# - LINQ groupby 到 List<List<object>>

c# - MVC Linq 查询返回继承实体的 ID,但该实体为 null。我如何.Include() TPH 成员?

c# - Razor 中枚举下拉列表的显示名称

c# - 如何将值插入 msi 表

java - 需要将大型 QueryRunner 结果流式传输到文件,似乎存储在内存中

c# - 如果已在下拉列表中选择了 Item,SelectedIndexChanged 事件不会触发?

c# - 从 NUNIT 测试启动应用程序

c# - WPF 重复密码 IMultiValueConverter