2010-06-10 6 views
0

L'utilisation de ASP.NET MVC 2 et de et Html.RenderAction dans ma page maître implémentée comme ci-dessous génère une erreur avec "le contrôleur pour le chemin '/' n'a pas été trouvé" :Html.RenderAction - le contrôleur pour le chemin '/' n'a pas été trouvé

Je suis un peu un débutant, dois-je faire quelque chose dans RegisterRoutes pour que cela fonctionne?

<% Html.RenderAction("TeaserList", "SportEventController"); %> 

public class SportEventController : Controller 
{ 
    public string TeaserList() 
    { 
     return "hi from teaserlist"; 
    } 
} 

Répondre

7

Je ne suis pas sûr, mais je suppose que les choses suivantes sont fausses:

  • votre méthode de teaserlist doit renvoyer une ActionResult
  • l'appel à RenderAction doit être RenderAction("TeaserList", "SportEvent") sans le suffixe contrôleur
+1

je vais ramper dans mon shell, c'était le suffixe "Controller", merci Martin ... BTW: il ne doit pas retourner un ActionResult, retourner une chaîne fonctionne très bien ... essayez-le et voyez! – PeteN

+0

Merci pour les commentaires! – M4N

+0

Méfiez-vous des problèmes de sécurité lors du retour des chaînes d'utilisateurs! (ce qui ne semble pas être le cas, mais il fallait le mentionner ..) –

0

Pour que travailler, TeaserList() doit être une méthode qui retourne un ActionResult comme:

` 
public virtual ActionResult TeaserList() 
    { 
     return View(); 
    } 

`

Si vous voulez « Salut de teaserlist » vous pourriez alors que dans une vue appelée TeaserList ou vous pouvez ajouter

`ViewData["teaserList"] = "hi from teaserlist";` 

d l'avoir rendu à votre avis.

+0

il ne doit pas retourner un ActionResult, retourner une chaîne fonctionne très bien ... essayez-le et voyez! – PeteN

+0

Bien que cela soit vrai (en substance, votre contrôleur transforme toutes les méthodes pubiennes en actions de toute façon), je crois que l'esprit est de retourner ActionResults, et de cette façon (pour tester, par exemple) vous pouvez retourner n'importe quel sous-type. Donc dans votre cas, vous pouvez renvoyer un ContentResult. –

Questions connexes