【问题标题】:Fill HTML table with stored procedure SELECT statement output用存储过程 SELECT 语句输出填充 HTML 表
【发布时间】:2015-08-13 14:46:50
【问题描述】:

我正在使用 C# .NET MVC 4 和实体框架来执行存储过程。我有一个在存储过程中运行的查询,类似于:

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

所以可以说这会返回大约 50 行。我正在尝试将 SELECT 语句的输出放入我的视图中的 HTML 表中。我以前没有做过这种事情,所以我不确定最好的方法。这么多数据可以在输出参数中发送回控制器吗?如果是这样,我不太了解将数据格式化为HTML 表的方法。

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

谢谢!

【问题讨论】:

    标签: c# asp.net-mvc entity-framework sql-server-2008 stored-procedures


    【解决方案1】:

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

    当您调用存储过程时,将复杂类型的结果集 (tolist()) 直接传递给视图,或者制作存储过程复杂类型的视图模型版本并传递它。

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

    【讨论】:

      【解决方案2】:

      在你的控制器中

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

      在您的页面中

      foreach (var rowin ViewBag.data)
      {
          <tr>
              <td>@row.Fieldx</td>
          </tr>
      }
      

      【讨论】:

        【解决方案3】:
        1. 在您的模型中创建一个映射您的表属性的实体。 例如:

          MyTableMapping{ int col1{得到;放;} 字符串 col2{ 得到;放;} …… }

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

          公共行动结果索引(){ [您从数据库加载数据的代码] ... 返回视图(您的收藏); }

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

        再见。

        【讨论】:

          【解决方案4】:

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

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

          在Controller中调用Stored Procedure,将Entity返回给View。 很好解释here

          【讨论】:

            猜你喜欢
            • 2019-01-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多