Заполнение Telerik Grid с использованием ViewModel (MVC3) - PullRequest
0 голосов
/ 05 мая 2011

Хорошо, это действительно новый вопрос, но я в тупике. Я пытаюсь использовать 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;
        }
    }
}

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

---- Хранилище (модель) -----

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 голосов
/ 19 мая 2011

Вам не нужен второй return View () в контроллере, но это не вызывает каких-либо проблем.

Вы можете попробовать наложить приведенную переменную из вашего репозитория, чтобы она возвращаласьтип, указанный в ответе:

 // return vProjects;

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

Я очень рекомендую сайт Microsoft для изучения MVC, у них есть отличная отправная точка для изучения MVC.

 http://www.asp.net/mvc
...