2009-06-14 22 views
3

Ich erstelle Erweiterungsmethoden für die HtmlHelper-Klasse in einer MVC-Webanwendung. Nichts wird angezeigt, nicht einmal die standardmäßigen InputExtensions.Erweiterungsmethoden werden nicht angezeigt

public static class HtmlHelpers 
{ 
    public static void RegisterScriptInclude(this HtmlHelper htmlhelper, string script) 
    { 
     if (!RegisteredScriptIncludes.ContainsValue(script)) 
     { 
      RegisteredScriptIncludes.Add(RegisteredScriptIncludes.Count, script); 
     } 
    } 

    public static string RenderScripts(this HtmlHelper htmlhelper) 
    { 
     var scripts = new StringBuilder(); 
     foreach (string script in RegisteredScriptIncludes.Values) 
     { 
      scripts.AppendLine("<script src='" + script + "' type='text/javascript'></script>"); 
     } 
     return scripts.ToString(); 

    } 

    private static SortedList<int, string> RegisteredScriptIncludes 
    { 
     get 
     { 
      SortedList<int, string> value = (SortedList<int, string>)HttpContext.Current.Items["RegisteredScriptIncludes"]; 
      if (value == null) 
      { 
       value = new SortedList<int, string>(); 
       HttpContext.Current.Items["RegisteredScriptIncludes"] = value; 
      } 
      return value; 
     } 
    } 

} 

Die Erweiterungsmethoden werden auch nicht im Code angezeigt.

Wo sind sie?

Antwort

8

Haben Sie eine using Anweisung vergessen? Insbesondere benötigen Sie "using path.to.my.namespace;", um die Erweiterungsmethoden zu erhalten.

3

Eine andere offensichtliche Sache zu überprüfen, falls jemand diesen Beitrag findet, ist das "this" Schlüsselwort im ersten Argument Ihrer Erweiterungsmethode zu vergessen. Wenn Sie das vergessen, gibt es nicht viel, was der Compiler tun kann, um Ihnen zu helfen!