2017-01-24 2 views
0

Я пытаюсь показать результаты из хранимой процедуры на представлении. У меня есть приложение 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 

Я пытаюсь подсчитать, сколько процентов арендной платы из бюджета. И затем я хочу показать результаты в представлении.

ответ

1

Прежде всего, когда вы возвращаете представление, вам нужно либо передать имя, либо оставить его пустым, а затем он будет работать с использованием значений по умолчанию. Вы также можете передать модель, но то, что вы сделали, это передать два элемента данных. Первый из них должен быть Посмотреть имя:

return View("YourViewName", yourDataModel); 

Основная концепция MVC это: вот Просмотр и здесь данные для представления в виде модели.

Непосредственно бросать объекты из базы данных на виду, как правило, плохая идея, я бы предложил вам немного разобрать свои вещи.

У вас есть бизнес-уровень, в котором вы получаете данные, вы указываете на объект модели, который соответствует представлению вида. Подумайте об этом как о слое перевода, из которого выглядят ваши данные, и о том, что ваш вид должен отображать. Правило большого пальца, только отправьте на просмотр, что ему нужно отобразить, и ничего больше.

Вы можете комбинировать несколько элементов данных в одной модели данных для представления, если это то, что вам нужно, но вы все равно передаете только один объект в свой вид.

Смежные вопросы