MVC3 probleempje met Controller

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 427937

Topicstarter
ik weet niet of iemand eerder met dit probleem is aangekomen anders linken jullie me maar naar de oplossing. anders is hier het probleem. ik heb een integer(PageSize) en deze geeft geen problemen tot we bij .Take(PageSize), komen.

en dit geeft mij de fout "Compiler Error CS0266, Cannot implicitly convert type 'system.linq.iqueryable<webshop.domain.entities.product' to 'System.Collections.Generic.IEnumerable<webshop.webui.models.product>'. An explicit conversion exists (are you missing a cast?)"

ik zie de fout niet echt dus, ik hoop dat iemand van jullie dat wel doet.

using System.Linq;
using System.Web.Mvc;
using Webshop.Domain.Abstract;
using Webshop.WebUI.Models;
using Webshop.Domain.Entities;

namespace Webshop.WebUI.Controllers
{
public class ProductController : Controller
{
public int PageSize = 8;
private IProductRepository repository;

public ProductController(IProductRepository repoParam)
{
repository = repoParam;
}

public ViewResult List(int page = 1)
{
ProductsListViewModel viewModel = new ProductsListViewModel
{
Products = repository.Products
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Products.Count()
}
};
return View(viewModel);
}
}
}

Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 21:23
Je kan iets van type A niet in iets van type B stoppen.

C#:
1
2
int a = 3;
a = "hoi"; // ERROR


Zelfde probeer je hier nu wel, Take() geeft een IEnumerable terug, en Products is een IQueryable.

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Gelukkig is er ook een Take() extension method voor (I)Queryable.
C#:
1
2
3
4
public static IQueryable<TSource> Take<TSource>(
      this IQueryable<TSource> source,
      int count
  )


Echter de database (repository) geeft een type 'webshop.domain.entities.product' terug, terwijl de view een 'webshop.webui.models.product' gebruikt. Die conversie gaat niet goed.

Ik kan alleen moeilijk geloven dat het wel goed gaat als Take() wordt weggelaten. Dat zou immers niet stroken met de foutmelding..

Als je gebruik maakt van automapper, dan ben je misschien een conversie vergeten.

[ Voor 1% gewijzigd door Niemand_Anders op 05-01-2012 20:53 . Reden: code tag ipv quote tag gebruikt ]

If it isn't broken, fix it until it is..