2012-01-04 3 views
2

J'ai un problème avec une action de contrôleur particulière qui n'affiche pas la vue.Erreur: La vue ou son maître n'a pas été trouvé. Les emplacements suivants ont été recherchés

Voici l'Action Controller:

public ActionResult DisplayStudents(string id) 
     { 
      var name = (from p in data.StudentTable.Where(a => a.ClassNumberID == id) 
            group n by n.StudentName into g 
            select g.Key).First(); 

      return View(name); 
     } 

Nom du contrôleur est "étudiant" et la vue est présent dans "Vues/Etudiant/DisplayStudents.aspx"

Pourquoi ai-je toujours cette erreur:

Server Error in '/' Application. 
-------------------------------------------------------------------------------- 

The view 'Thomas Guenn' or its master was not found. The following locations were searched: 
~/Views/Student/Thomas Guenn.aspx 
~/Views/Student/Thomas Guenn.ascx 
~/Views/Shared/Thomas Guenn.aspx 
~/Views/Shared/Thomas Guenn.ascx 

aussi, pourquoi est-il à la recherche de "Thomas Guenn.aspx" au lieu de "DisplayStudents.aspx"?

Voici ma page Voir:

>" %>

DisplayStudents Students are listed below:

<table> 

<% foreach (var item in Model) { %> 
    <tr> 
     <td> 
      <%= Html.Encode(item)%> 
     </td> 
    </tr> 

<% } %> 

</table> </body> </html> 
+0

Si vous mettez une pause point dans le contrôleur, êtes-vous frapper l'action que vous attendez? –

+0

pouvez-vous afficher vos itinéraires, et l'URL demandée? Cela ressemble à un problème de routage. – rejj

Répondre

5

Parce que votre appel View(name); appelle la surcharge View(string viewName). Si vous voulez passer la chaîne comme modèle, essayez d'utiliser

return View((object)name); 

à la place.

Si cela ne fonctionne pas, essayez de spécifier viewName explicitement, en utilisant la surcharge View(string viewName, object model) comme ceci:

return View("DisplayStudents", name); 

UPD: En regardant votre code de la vue, je peux dire que ce ne sera pas le rendement prévu page non plus: vous renvoyez un seul élément de chaîne en tant que modèle du contrôleur, mais votre DisplayStudents.aspx attend une collection. Vous devez également soit corriger votre vue (donc accepter une seule chaîne comme modèle) ou renvoyer un IEnumerable<string> du contrôleur - en supprimant .First() de l'expression LINQ pour name.

3

Cela se produit parce que la surcharge attend un objet si ce sont des données, et une chaîne si vous passez le nom de la vue dans

Utilisez ce lieu.

return View((object)name); 
Questions connexes