2017-12-02 2 views
0

내보기로 이동하는 동안 오류가 발생했습니다. IEnumerable없이 시도했지만 잘 작동하지 않습니다.MVC : 사전에 전달 된 모델 항목의 형식이 System.Int32입니다.

오류 : MVC : 사전에 전달 된 모델 항목의 형식은 System.Int32이고이 사전에는 형식 모델 요소 인 System.Collections.Generic.IEnumerable`1 [ECinema.Models.Video]이 필요합니다.

@model IEnumerable<ECinema.Models.Video> 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

내 컨트롤러

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Search() 
    { 
     ECinemaDBEntities db = new ECinemaDBEntities(); 
     return View(db.SearchVideo("")); 
    } 

    [HttpPost] 
    public ActionResult Search(string VideoName) 
    { 
     ECinemaDBEntities db = new ECinemaDBEntities(); 
     return View(db.SearchVideo(VideoName)); 
    } 
} 

내 모델

public partial class Video_SearchVideo_Result1 
{ 
    public int VideoID { get; set; } 

    public string ImageUrl { get; set; } 

    public string VideoName { get; set; } 

    public string Description { get; set; } 

    public Nullable<System.TimeSpan> Time { get; set; } 

    public Nullable<System.DateTime> Date { get; set; } 
} 

내 SearchVideo

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); 
} 

내 ECinema.Model.Video

public partial class Video 
{ 
    public int Id { get; set; } 
    public string VideoName { get; set; } 
    public string OriginalTitle { get; set; } 
    public int UserId { get; set; } 
    public int CategoryId { get; set; } 
    [DataType(DataType.Date)] 
    public System.DateTime Date { get; set; } 
    public string ImageUrl { get; set; } 
    public string Description { get; set; } 
    public System.TimeSpan Time { get; set; } 
    public string Director { get; set; } 
    public string Staff { get; set; } 
    public string Restriction { get; set; } 
    public string Length { get; set; } 
    public bool IsDeleted { get; set; } 

    public virtual Category Category { get; set; } 
} 
+1

ECinema.Models.Video 모델 – AlameerAshraf

+1

으로 질문 업데이트를 표시하십시오.'int SearchVideo'가'@model IEnumerable '오류 메시지가 표시됩니다. 당신은 당신이 무엇을 (보기)가 – Nkosi

+0

을받을 것으로 기대와 함께 일치해야하지만 내보기에서 @ 모델 IEnumerable 있어요 – mariie

답변

1

SearchVideo은 코드에 따라 같은 int 반환

public virtual int SearchVideo(string videoName) 

당신은 대신 IEnumerable<ECinema.Models.Video>를 반환하는 기능을 변경해야합니다.

가장 쉬운 방법은 저장 프로 시저를 호출하는 대신 LINQ를 사용하는 것입니다. 그러나 이 실제로 인 경우 저장 프로 시저를 유지하려는 경우 desired type을 반환하도록 구성 할 수 있습니다.

+0

그것은, thx 동안 작동합니다 – mariie

관련 문제