【问题标题】:Showing results from stored procedure on view在视图中显示存储过程的结果
【发布时间】:2017-06-09 14:22:50
【问题描述】:

我试图在视图上显示存储过程的结果。我有一个带有以下代码的 ASP.NET MVC 应用程序。我使用 EntityFramework 来生成模型。

public class ProjectsController : Controller
{
    private DatabaseEntities db = new DatabaseEntities();

    // GET: Projects
    public ActionResult Index()
    {
        var projects = db.Projects.Include(p => p.Headquarter);
        return View(projects.ToList(), db.CALCULATEBUDGET());
    }
}

我在这部分收到以下错误:db.CALCULATEBUDGET()

Argument 1: cannot convert from 'System.Collections.Generic.List<TestApplication.Models.Project>' to 'string'   TestApplication C:\TestApplication\TestApplication\Controllers\ProjectsController.cs    21  Active


Argument 2: cannot convert from 'System.Data.Entity.Core.Objects.ObjectResult<TestApplication.Models.CALCULATEBUDGET_Result>' to 'string' TestApplication   C:\TestApplication\TestApplication\Controllers\ProjectsController.cs 21 Active

我的存储过程:

CREATE PROCEDURE dbo.CALCULATEBUDGET  
AS  
SELECT MonthlyRent, Budget, 100 * H.MonthlyRent/P.Budget AS RentPercentage
FROM Headquarter H, Project P
WHERE H.HeadquarterId = P.Headquarter_HeadquarterId

我正在尝试计算租金占预算的百分比。然后我想在视图中显示结果。

【问题讨论】:

    标签: sql asp.net stored-procedures


    【解决方案1】:

    首先,当您返回 View 时,您需要传递名称或将其留空,然后使用默认设置。您也可以传递一个模型,但您所做的是传递两个数据项。第一个需要是视图名称:

    return View( "YourViewName", yourDataModel);
    

    MVC 的主要概念是:这里是一个视图,这里是模型形式的视图的数据。

    在视图中直接从数据库中抛出对象通常是一个坏主意,我建议你将你的东西稍微解耦。

    有一个业务层,您可以在其中获取数据,映射到与视图需要显示的内容相匹配的模型对象。将其视为您的数据外观和视图需要显示的内容的转换层。经验法则,只向视图发送它需要显示的任何内容,仅此而已。

    如果您需要,您可以将多个数据项组合到视图的一个数据模型中,但您仍然只将一个对象传递给您的视图。

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2018-01-02
      • 2013-06-08
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      相关资源
      最近更新 更多