2010-12-14 5 views
3

J'essaie de créer une méthode d'extension en C# pour la classe HtmlHelper. J'ai lu la page MSDN pour cela, et je suis sûr que je référence les espaces de noms corrects. Je me demande ce que je pourrais faire de mal.Création d'une méthode d'extension en C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; //Correctly referencing the necessary namespaces, right? 

namespace MvcApplication1.HelperMethods 
{ 
    public static class NavigationalMenu 
    { 
     public static string MyMenu(this HtmlHelper helper) 
     { 
      CategoryRepository categoryRepo = new CategoryRepository(); 
      var categories = categoryRepo.FindAllCategories(); 

      foreach (Category c in categories) 
      { 
       helper.RouteLink(blablabla); //Construct links and return them. 
      } 

      //helper.RouteLink doesn't show up! C# wipeouuuuuttttt. 
      //It's as if 'helper' doesn't have the RouteLink method there. 
     } 
    } 
} 

Première fois que cela m'arrive lors de la programmation en C#. Quelqu'un d'autre rencontre ce problème?

+0

Si vous pensez que je suis pêche à la traîne, essayez ce code dans votre propre IDE. Si vous trouvez une solution, partagez-la! :) –

Répondre

4

Selon MSDN:

Extensions à la classe HtmlHelper sont situé dans l'espace de noms System.Web.Mvc.Html . Ces extensions ajoutent méthodes d'aide pour créer des formulaires, rendant contrôles HTML, rendant partiellement vues, validation de la saisie, et plus encore.

Essayant d'inclure l'espace de noms System.Web.Mvc.Html. LinkExtensions.RouteLink donne son espace de nom en tant que tel (il est dit qu'il est dans System.Web.Mvc.dll, juste dans un espace de noms différent).

+0

Cela a résolu mon problème. J'ai dû ajouter les espaces de noms pour Mvc et Mvc.Html. Merci pour l'aide! :) –

0

Votre espace de noms peut être incorrect. Essayez using System.Web.Mvc.Html;

http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper(VS.90).aspx

+0

J'ai ajouté l'espace de noms plus spécifique que vous avez suggéré, mais maintenant le type de variable n'est même pas reconnu. Pensez-vous que j'ai trouvé un bug dans MVC3? Pourquoi autrement cela ne fonctionnerait-il pas? –

3

Vous devez référencer System.Web.Mvc pour le HtmlHelper, mais l'extension est dans System.Web.Mvc.Html.

0

Je ne suis pas ajouter que l'espace de noms voir le resukt System.Web.Mvc.Html