C# 用存储过程SELECT语句输出填充HTML表
我正在使用C.NETMVC4和实体框架来执行一个存储过程。我有一个在存储过程中运行的查询,看起来像:C# 用存储过程SELECT语句输出填充HTML表,c#,asp.net-mvc,entity-framework,sql-server-2008,stored-procedures,C#,Asp.net Mvc,Entity Framework,Sql Server 2008,Stored Procedures,我正在使用C.NETMVC4和实体框架来执行一个存储过程。我有一个在存储过程中运行的查询,看起来像: Select Column1, Column2, Column3 from TestTable Where StatusId = 3; 假设返回大约50行。我试图将SELECT语句的输出放入视图中的HTML表中。我以前没有做过这种事情,所以我不确定最好的方法。那么多的数据可以在输出参数中发送回控制器。如果是这样的话,我不太理解将数据格式化到HTML表中的方法 我以前也做过类似的事情,但在这种情
Select Column1, Column2, Column3
from TestTable
Where StatusId = 3;
假设返回大约50行。我试图将SELECT语句的输出放入视图中的HTML表中。我以前没有做过这种事情,所以我不确定最好的方法。那么多的数据可以在输出参数中发送回控制器。如果是这样的话,我不太理解将数据格式化到HTML表中的方法
我以前也做过类似的事情,但在这种情况下,我每次只返回一行,所以我只是在输出参数中将数据发送回控制器,然后在ViewBag中将其发送到我的视图。使用多行的最佳方法是什么
谢谢 在edmx中,存储过程将生成一个复杂类型,它本质上是结果集某一行的数据结构 调用存储过程时,可以将复杂类型的结果集直接传递给视图,也可以将存储过程的复杂类型制作成viewmodel版本并传递给视图 然后在您的视图中,您只需要在模型中创建一个表和foreach项,创建一个表并相应地填充控制器中的数据单元
ICollection<Object> data = your stored procedure result here...
ViewBage.data = data;
在您的页面中
foreach (var rowin ViewBag.data)
{
<tr>
<td>@row.Fieldx</td>
</tr>
}
在模型中创建映射表属性的实体。
例:
MyTableMapping{
int col1{get;set;}
字符串col2{get;set;}
....
}
在控制器中,执行一个存储过程,并将结果强制转换为之前创建的yout模型映射集合。
调用视图时,将其传递为集合
公共行动结果指数{
[从数据库加载数据的代码]
...
返回您的收藏;
}
在视图cshtml文件中,设置与IEnumerable相同的类型模型
然后为MVC4使用Web网格。
这里有一个例子:
再见。将通过使用实体框架传递参数值来调用存储过程 配置实体框架后,下一步是在实体框架模型中导入存储过程。为此,您需要右键单击实体模型并选择“从数据库更新模型”选项 存储过程在控制器中调用,实体返回到视图。 解释得很好