Передача записи в представление с использованием структуры объекта - PullRequest
0 голосов
/ 07 декабря 2011

Я использую .NET 4.0, MVC3 и Entity Framework 4.0

Мне нужно передать запись базы данных типа «оператор» в представление.Код для извлечения записи выглядит следующим образом:

public ActionResult pdfStatement(string InvoiceNumber)

{

            ObjectParameter[] parameters = new ObjectParameter[1];

            parameters[0] = new ObjectParameter("InvoiceNumber", InvoiceNumber);

            return View(_db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters));            
        }

, где "uspInvoiceStatement" - моя хранимая процедура, используемая для извлечения "оператора"

. Я создал строго типизированное представление, которое получает "утверждение "

< % @ Page Language="C#" Inherits="System.Web.Mvc.ViewPage < InvoiceSearch.Models.Statement >" %>

Когда я запускаю приложение, я получаю исключение, говорящее

    "The model item passed into the dictionary is of type 'System.Data.Objects.ObjectResult`1[InvoiceSearch.Models.Statement]',
 but this dictionary requires a model item of type 'InvoiceSearch.Models.Statement'. 

Помогите мне избежать этой проблемы.«

1 Ответ

0 голосов
/ 07 декабря 2011

Ошибка удивительно полезна - она ​​говорит вам, что вы отправляете ObjectResult в view asi viewmodel, а вам следует отправить Statement.

Ваша _db.ExecuteFunction всегда возвращает ObjectResult , поэтому вам нужно взять из него Statement, например:

var statementResult = _db.ExecuteFunction<Models.Statement>("uspInvoiceStatement", parameters);
var statement = statementResult.SingleOrDefault();
if (statement != null)
{
    return View(statement); // isnt that nicer when you can see what your viewmodel is?
}
else
{
    return View("NotFound");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...