用存储过程SELECT语句输出填充HTML表



我使用c# . net MVC 4和实体框架来执行存储过程。我有一个在存储过程中运行的查询,看起来像:

Select Column1, Column2, Column3
from TestTable
Where StatusId = 3;

假设返回大约50行。我试图从SELECT语句的输出到我的视图中的HTML表。我以前没有做过这种事情,所以我不确定最好的方法是什么。那么多的数据可以通过输出参数发送回控制器吗?如果是这样,我不太理解将数据格式化到HTML表中的方法。

我以前做过类似的事情,但在这种情况下,我每次只有一行回来,所以我只是在输出参数中将数据发送回控制器,然后将其发送到ViewBag中的视图。多行的最佳方法是什么?

谢谢!

在您的edmx中,您的存储过程将生成一个复杂类型(实质上是结果集的一行的数据结构)

当你调用你的sproc时,要么将你的复杂类型的结果集(tolist())直接传递给视图,要么将你的sproc的复杂类型的视图模型版本传递给视图。

,然后在视图中,您只需要创建一个表,并在模型中检索每个项目,创建一个并相应地填充数据单元格

在你的控制器

ICollection<Object> data = your stored procedure result here...
ViewBage.data = data;

在你的页面

foreach (var rowin ViewBag.data)
{
    <tr>
        <td>@row.Fieldx</td>
    </tr>
}
  1. 在模型中创建映射表属性的实体。例:

    MyTableMapping {int col1{得到;设置;}字符串col2{get;设置;}…}

  2. 在您的控制器中执行一个存储过程并将结果转换为之前创建的模型映射的集合。当你调用一个视图时,给它传递一个集合

    public ActionResult Index(){[从数据库加载数据的代码]…返回视图(yourCollection);}

  3. 在您的视图cshtml文件设置类型模型相同的IEnumerable<ModelMapping>然后在MVC 4中使用Web网格。这里有一个例子:http://www.codeproject.com/Tips/615776/WebGrid-in-ASP-NET-MVC

再见。

存储过程将通过使用实体框架传递参数值来调用。

一旦配置了实体框架,下一步就是在实体框架模型中导入存储过程。为了做到这一点,您需要右键单击实体模型并选择从数据库选项更新模型。

在控制器中调用存储过程,并将实体返回给视图。这里解释得很好

最新更新