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

时间:2014-10-08 02:58:36

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

在我的视图中,我想使用行和列等方法遍历DataTable,以便我可以动态填充HTML表。为此,我强烈键入了我的Razor View到System.Data.DataTable。

@model System.Data.DataTable

但是为了处理我使用直接ADO.NET从SQL Server中提取的数据 - 我构建了一个实际的Model Class,它返回了我想要循环的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 Model Class,然后将DataTable对象传递给View:

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

    return View(newMemSet);
}

因此,如果我强烈键入View到我自己的模型,我似乎松开了System.Data.DataTable给我的Rows和Columns方法。但是如果我强烈地将View输入到实际模型中,编译器会告诉我:

  

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

我怎样才能强烈地将View输入到我自己的模型中,并且使用DataTable类型的方法使用相同的类型?

1 个答案:

答案 0 :(得分:1)

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

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