我使用的是.NET 4.0,MVC3和实体框架4.0
我需要将类型为“statement”的数据库记录传递给视图。获取记录的代码如下:
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”是用于获取“statement”的存储过程
我创建了一个强类型视图,它接收“语句”
< % @ 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'.
帮助我摆脱这个麻烦。 “
答案 0 :(得分:0)
该错误非常有用 - 它告诉您,您正在发送ObjectResult&lt; Statement&gt;到视图asi viewmodel,你应该发送Statement。
你的_db.ExecuteFunction总是返回ObjectResult&lt; Statement&gt;,所以你需要从中获取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");
}