2010-06-30 4 views
1

J'ai erreur de lancer sur la page Voir et je pense que je passe mauvais type, quelqu'un peut me corriger s'il vous plaît - merci.L'élément de modèle passé dans le dictionnaire est de type {ASP.NET MVC}

L'élément de modèle transmis au dictionnaire est de type 'System.Collections.Generic.List 1[App.Domain.Model.Interface.IPerson]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [App.Domain.Service.PersonService]'.

MyService ressemble à ceci ....

namespace App.Domain.Service 
{ 
    public class PersonService : IPersonService 
    { 
     private IPersonRepository _personRepository; 
     public PersonService(IPersonRepository personRepository) 
     { 
      _personRepository = personRepository; 
     } 

     public List<IPerson> GetPerson() 
     {    
      return _personRepository.GetHost(); 
     } 
    } 
} 

myView ressembler à ceci ...

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<IEnumerable<App.Domain.Service.PersonService>>" %> 

mon regard contrôleur comme ça ...

public ActionResult GetPersons() 
     { 
      IPersonRepository personRepo = new PersonRepository(); 
      PersonService person = new PersonService(personRepo); 
      IList<IPerson> p = person.GetPerson(); 
      return View(p); 
     } 

Répondre

2

Vous êtes l'envoi du mauvais type à la vue() Dans votre vue Déclarer dit App.Domain.Service.PersonService, mais dans votre vue vous lui envoyez une vue (IPerson). Si vous souhaitez envoyer un IPerson à votre vue l'étiquette doit se lire comme:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<App.Domain.Model.Interface.IPerson>>" %> 
+1

pourquoi je ne vois pas le « App.Domain.Model.Interface.IPerson » en vue classe de données? signifie ... quand je crée une page View (clic droit dans le contrôleur et cliquez sur Add View) et je sélectionne "create strong typed view" mais je vois toutes mes classes de model/repository mais je ne vois rien en relation avec "Interface" pourquoi donc? –

+0

Pas vraiment sûr pourquoi ils n'incluent pas les interfaces, je n'ai en fait pas essayé d'utiliser un à travers l'assistant de vue avant. Ce serait une bonne question de suivi si. – Anthony

Questions connexes