MVC:传入字典的模型项是 System.Int32 类型
MVC: The model item passed into the dictionary is of type System.Int32
我在尝试进入视图时遇到错误。我尝试过不使用 IEnumerable,但效果不佳。
错误:
MVC:传入字典的模型项是 System.Int32 类型,而此字典需要类型模型元素 System.Collections.Generic.IEnumerable`1[Cinema.Models.Video].
@model IEnumerable<Cinema.Models.Video>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
我的控制器
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Search()
{
CinemaEntities db = new CinemaEntities();
return View(db.SearchVideo(""));
}
[HttpPost]
public ActionResult Search(string VideoName)
{
CinemaEntities db = new CinemaEntities();
return View(db.SearchVideo(VideoName));
}
}
我的搜索视频
public virtual ObjectResult<Video_SearchVideo_Result1> Video_SearchVideo(string videoName)
{
var videoNameParameter = videoName != null ?
new ObjectParameter("VideoName", videoName) :
new ObjectParameter("VideoName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Video_SearchVideo_Result1>("Video_SearchVideo", videoNameParameter);
}
public virtual int SearchVideo(string videoName)
{
var videoNameParameter = videoName != null ?
new ObjectParameter("VideoName", videoName) :
new ObjectParameter("VideoName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SearchVideo", videoNameParameter);
}
SearchVideo
returns 一个 int
根据您的代码:
public virtual int SearchVideo(string videoName)
您需要将该函数更改为 return IEnumerable<ECinema.Models.Video>
。
最简单的方法可能是使用 LINQ 而不是调用存储过程。但是如果您真的想要保留存储过程,您可以将其配置为return您的desired type.
我在尝试进入视图时遇到错误。我尝试过不使用 IEnumerable,但效果不佳。
错误: MVC:传入字典的模型项是 System.Int32 类型,而此字典需要类型模型元素 System.Collections.Generic.IEnumerable`1[Cinema.Models.Video].
@model IEnumerable<Cinema.Models.Video>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
我的控制器
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Search()
{
CinemaEntities db = new CinemaEntities();
return View(db.SearchVideo(""));
}
[HttpPost]
public ActionResult Search(string VideoName)
{
CinemaEntities db = new CinemaEntities();
return View(db.SearchVideo(VideoName));
}
}
我的搜索视频
public virtual ObjectResult<Video_SearchVideo_Result1> Video_SearchVideo(string videoName)
{
var videoNameParameter = videoName != null ?
new ObjectParameter("VideoName", videoName) :
new ObjectParameter("VideoName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Video_SearchVideo_Result1>("Video_SearchVideo", videoNameParameter);
}
public virtual int SearchVideo(string videoName)
{
var videoNameParameter = videoName != null ?
new ObjectParameter("VideoName", videoName) :
new ObjectParameter("VideoName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SearchVideo", videoNameParameter);
}
SearchVideo
returns 一个 int
根据您的代码:
public virtual int SearchVideo(string videoName)
您需要将该函数更改为 return IEnumerable<ECinema.Models.Video>
。
最简单的方法可能是使用 LINQ 而不是调用存储过程。但是如果您真的想要保留存储过程,您可以将其配置为return您的desired type.