使用存储过程SELECT语句输出

时间:2015-08-13 14:46:50

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

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

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

在您的控制器中

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

在您的信息页

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

答案 2 :(得分:0)

  1. 在模型中创建一个映射表属性的实体。 例如:

    MyTableMapping {  int col1 {get;组;}  string col2 {get;组;}  .... }

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

    public ActionResult Index(){    [从数据库加载数据的代码] ...    return View(yourCollection); }

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

  4. 再见。

答案 3 :(得分:0)

将通过使用Entity Framework传递参数值来调用存储过程。

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

在Controller中调用存储过程,并将实体返回到视图。 很好解释的here