2010-12-14 7 views
3

Ich versuche, eine Erweiterungs-Methode in C# für die HtmlHelper-Klasse zu erstellen. Ich habe die MSDN-Seite dafür gelesen, und ich bin sicher, dass ich die richtigen Namespaces referenziere. Ich frage mich, was ich falsch machen könnte.Erstellen einer Erweiterungsmethode in 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. 
     } 
    } 
} 

Das erste Mal, dass mir das bei der Programmierung in C# passiert. Hat noch jemand dieses Problem?

+0

sehen Wenn Sie ich Trolling denken, versuchen Sie diesen Code in Ihren eigenen IDE. Wenn Sie eine Lösung finden, teilen Sie diese bitte mit! :) –

Antwort

4

Nach MSDN:

Erweiterungen der Htmlhelper Klasse sind im Namespace System.Web.Mvc.Html befindet. Diese Erweiterungen hinzufügen Helper Methoden zum Erstellen von Formularen, Rendering HTML-Steuerelemente, Rendering teilweise Ansichten, Validierung der Eingabe und mehr.

Probieren Sie den Namespace System.Web.Mvc.Html. LinkExtensions.RouteLink gibt seinen Namespace als das (es steht in System.Web.Mvc.dll, nur in einem anderen Namensraum).

+0

Das hat mein Problem gelöst. Ich musste die Namespaces für Mvc und Mvc.Html hinzufügen. Danke für die Hilfe! :) –

0

Ihr Namespace ist möglicherweise falsch. Versuchen Sie using System.Web.Mvc.Html;

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

+0

Ich habe den spezifischeren Namespace hinzugefügt, den Sie vorgeschlagen haben, aber jetzt wird der Variablentyp nicht einmal erkannt. Denkst du, ich habe einen Fehler in MVC3 gefunden? Warum sonst würde das nicht funktionieren? –

3

Sie müssen für die HtmlHelper auf System.Web.Mvc verweisen, aber die Erweiterung ist in System.Web.Mvc.Html.

0

Ich bin nicht sicher, fügen Sie den Namespace die resukt System.Web.Mvc.Html