2011-08-04 2 views
0

Je rencontre des problèmes avec mes extensions de la classe UrlHelper car elles ne sont pas détectées. Jusqu'à présent, j'ai fait ce qui suit:Espaces de noms importés par Razor

1) Ajout des espaces de noms à la section dans le web.config situé dans le dossier Views. Je les ai également ajoutés dans le web.config principal pour être sûr.

<system.web.webPages.razor>

2) fait en sorte que la référence System.Web.Mvc dans le fichier csproj est pour MVC3. J'ai également vérifié que les références System.Web.WebPages et System.Web.Helpers sont incluses.

3) S'assurer que csproj ProjectTypeGuids est correct.

{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

4) de vérifier que les points de bindingRedirect à MVC3. Ai-je raté quelque chose comme Google n'a rien apporté de différent?

Le code est le suivant (avec les choses non pertinentes épiler):

namespace MyNameSpace.Controllers.Extensions 
{ 
    using System.Web.Mvc; 
    using System.Web.Routing; 

    using Contracts.Entities; 
    using Controllers.Routing; 

    public static class UrlHelperExtensions 
    { 
     public static string BrowseLink(this UrlHelper urlHelper, ICategory category) 
     { 
      var routeValueDictionary = new RouteValueDictionary 
       { 
        { "categorypath", BrowsePath.Serialize(catagory) }, 
        { "pagenumber", "1" } 
       }; 

      return urlHelper.Action("Index", "Browse", routeValueDictionary); 
     } 
    } 
} 
+0

avez-vous ajouté les références à la section '' dans 'Web.Config '? – Eranga

+0

Désolé c'est ce que je voulais dire au point 1 merci – Chewy

Répondre

0

Dans le web.config sous Vues dossier Ajouter à ceci:

<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="NAMESPACE OF YOUR EXTENSION CLASS" /> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 

Et déchargement/rechargement le projet. Si le problème persiste, utilisez simplement une directive @using en haut de votre page cshtml ou vbhtml et importez votre classe Extension. En passant, quand vous dites "extensions à l'UrlHelper", je comprends que vous avez juste une classe statique avec des méthodes qui ont this UrlHelper helper comme premier argument. Si c'est le cas, utilisez d'abord la directive @using pour voir si cela fonctionne dans cshtml puis essayez d'ajouter à web.config

+0

Oui j'avais fait la première partie au point 1 - j'aurais dû mieux le clarifier. La méthode UrlHelper est telle que vous l'avez décrite et j'ai essayé d'ajouter l'instruction '@ using' mais sans succès. – Chewy

+0

pouvez-vous coller votre classe d'aide? Il y a probablement quelque chose de non-auxiliaire, et c'est pourquoi je pense que ça ne marche pas - même en utilisant '@ using'. – Zasz

+0

Mon erreur - de la vue que j'appelais '@ UrlHelper.BrowseLink (...)' au lieu de '@ Url.BrowseLink (...)' – Chewy

Questions connexes