解决MVC视图中的强类型逻辑冲突

本文关键字:冲突 强类型 MVC 视图 解决 | 更新日期: 2023-09-27 18:25:49

在我的视图中,我想使用Rows和Columns等方法循环浏览DataTable,这样我就可以动态填充HTML表。为此,我在System.Data.DataTable.中强键入了Razor视图

@model System.Data.DataTable

但是,为了处理数据——我使用直接的ADO.NET从SQL Server中提取数据——我构建了一个实际的模型类,它返回了我想在视图中循环的DataTable。

namespace MyProject.Models
{
    public Class DimensionY
    {
        public DataTable getDimMembers(string tableName)
        {
            //GET DATA FROM SQL AND PUT IT ONTO someDataTable
            return someDataTable;
        }
    }
}

然后,我的HomeController调用上面显示的这个DimensionY模型类,然后将DataTable对象传递给View:

public ActionResult Index (string tableName)
{
    DimensionY newMemSet = new DimensionY();
    newMemSet.getDimMembers(tableName);
    return View(newMemSet);
}

因此,如果我将View强键入到我自己的模型中,我似乎失去了System.Data.DataTable给我的Rows和Columns方法。但如果我将视图强键入到实际的model中,编译器告诉我:

传递到字典中的模型项的类型为"MyProject.Models.DimensionY",但此字典需要类型为"System.Data.DataTable"的模型项。

我如何在自己的模型中强键入View,同时使用DataTable类型的方法?

解决MVC视图中的强类型逻辑冲突

模型必须与传递给视图的对象相匹配。

将其更改为@model MyProject.Models.DimensionY