2011-05-05 5 views
0

좋아, 이것은 정말로 초보자 질문이지만 난처하게되었습니다. ViewModel을 사용하여 엔티티 개체에서 내 데이터를 가져 와서 telerik mvc 그리드를 채우려고합니다.ViewModel (MVC3)을 사용하여 Telerik 그리드에 채우기

이 시점에서 나는 조금 혼란스럽고 도움이 필요합니다.

나는 오류 메시지를 이해하고 있지만 MVC를 처음 접한 이래로이 문제를 어떻게 해결해야할지 모르겠습니다. 암시 적으로 'System.Linq.IQueryable'에 유형 'System.Linq.IQueryable을'변환 할 수 없습니다

---- ERROR ----

오류 1. 명시 적 변환 (? 당신이 캐스트를 누락) ProjectRepository.cs (23) (20) MvcMyAPP이

내가이 뷰 모델이 존재합니다

--VIEWMODEL--

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.UI.WebControls; 

namespace mvcMyModel.ViewModels 
{ 
    public class ProjectViewModel 
    { 
     public IQueryable<mvcMyAPP.Models.ProjectRepository> ProjectList 
     { 
      get; 
      set; 
     } 
    } 
} 

을 --CONTROLLER--

namespace MvcMyAPP.Controllers 
{ 
    public class HomeController : Controller 
    { 
     // GET: /Home/ 
     ProjectRepository Repository = new ProjectRepository(); 

     public ActionResult Index() 
     { 
      ProjectViewModel objProjectViewModel = new ProjectViewModel(); 
      objProjectViewModel.ProjectList = Repository.GetProjects(); 
      return View(objProjectViewModel); 
      return View(); 
     } 
    } 
} 

---- REPOSITORY (MODEL) -----

namespace mvcMyAPP.Models 
{ 
    public class ProjectRepository 
    { 

     mvcMyAPP.Models.MYEntities MYDB = new MYEntities(); 
     //Fetching data from table 

     public IQueryable<mvcMyAPP.ViewModels.ProjectViewModel> GetProjects() 
     { 
      var vProjects = (from tblProjects in MYDB.Projects 
           select tblProjects); 
      return vProjects; 
     } 
    } 

--- GRID ---

@{Html.Telerik().Grid(Model.ProjectList) 
.Name(
"Grid") 
.Pageable() 
.Sortable() 
.Filterable() 
.Groupable() 
.Render(); 
} 
+0

좋아, 내 엔터티 클래스는 프로젝트에서 만든 네임 스페이스와 거의 동일한 네임 스페이스를가집니다. 컨트롤러와 모델 등을 위해 mvcMyAPP를 사용했습니다. Entity 클래스에는 MvcMyAPP의 네임 스페이스가 있습니다. 자본 M은 간단하게 엔티티 클래스를 사용할 수 없게 만들었고 나는주의를 기울이지 않았다. 반환 유형으로 MvcMyAPP.T_PROJECT에 IQueryable 세트에 액세스하면 작동했습니다. W! – Keith

+0

추가 정보를 제공하기 위해 의견을 게시 할 필요는 없습니다. 질문을 편집하십시오. – dandan78

답변

0

당신은 컨트롤러에서 두 번째로 반환보기()를 필요로하지 않습니다, 그러나 그것은 어떤 문제가 발생하지 않습니다.

당신은 대가로 지정된 유형 반환 귀하의 저장소에서 리턴 변수에 깁스를 넣어 시도 할 수 있습니다 : 내가보기 엔 MVC 학습을위한 마이크로 소프트의 사이트를 추천

// return vProjects; 

// cast the return variable to return type 
return (IQueryable<mvcMyAPP.ViewModels.ProjectViewModel>)vProjects; 

을, 그들은 좋은 시작 지점이 MVC를 배우기.

http://www.asp.net/mvc 
관련 문제