使用ViewModel(MVC3)填充Telerik网格

时间:2011-05-05 13:52:22

标签: grid telerik viewmodel

好的,这是一个非常新手的问题,但我很难过。 我正在尝试使用ViewModel从实体对象获取数据并填充telerik mvc网格。

此时我有点困惑,需要你的帮助。

我理解错误消息,但我不确定如何解决这个问题,因为我对MVC很新。

---- ---- ERROR

  

错误1无法将类型'System.Linq.IQueryable'隐式转换为'System.Linq.IQueryable'。存在显式转换(您是否缺少演员表?)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;
        }
    }
}

- 控制器 -

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

1 个答案:

答案 0 :(得分:0)

您不需要在控制器中第二次返回View(),但这不会导致任何问题。

您可以尝试对存储库中的返回变量进行强制转换,以便返回返回指定的类型:

 // return vProjects;

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

我强烈推荐微软网站学习MVC,他们有一个很好的学习MVC的起点。

 http://www.asp.net/mvc