2014-12-02 11 views
8

Ich versuche, diesen Code zu mvc 6 zu portieren, jede Hilfe wird geschätzt, der Code kompiliert, aber die Methode ist in meinen Ansichten auf @Html.IsActive nicht verfügbar.HtmlHelpers in MVC 6

using Microsoft.AspNet.Mvc.Rendering; 

namespace Blah.Web.Helpers 
{ 
    public static class HtmlHelpers 
    { 

     public static string IsActive(this HtmlHelper htmlHelper, string controller, string action) 
     { 
      var routeData = htmlHelper.ViewContext.RouteData; 

      var routeAction = routeData.Values["action"].ToString(); 
      var routeController = routeData.Values["controller"].ToString(); 

      var returnActive = (controller == routeController && action == routeAction); 

      return returnActive ? "active" : ""; 
     } 

    } 
} 

Im Ansicht ich den Namespace verwiesen:

@using Blah.Web.Helpers; 
+3

haben Sie hinzugefügt '@ mit Blah.Web.Helpers aus Ihrer Sicht? –

+1

ja ich habe. Entschuldigung, dass ich diese Information nicht gepostet habe. – RickJames

+7

HtmlHelper sollte IHTmlHelper sein –

Antwort

18

In der Methodensignatur sollte HtmlHelperIHtmlHelper

Siehe Beispiel sein unten

namespace Blah.Web.Helpers 
{ 
    public static class HtmlHelpers 
    { 
     public static string IsActive(this IHtmlHelper htmlHelper, string controller, string action) 
     { 
      var routeData = htmlHelper.ViewContext.RouteData; 

      var routeAction = routeData.Values["action"].ToString(); 
      var routeController = routeData.Values["controller"].ToString(); 

      return (controller == routeController && action == routeAction) ? "active" : ""; 
     } 
    } 
} 
+2

Bitte bedenken Sie, diese Antwort so zu bearbeiten, dass die erste Zeile so etwas liest wie 'In der Methode signure, 'HtmlHelper' sollte' IHtmlHelper' sein. Dies würde anderen Benutzern beim Vergleichen der Code-Q + A-Codefragmente helfen. –

+0

update die Frage tahnks für die Empfehlung –

+0

Ist das eine neue Anforderung in MVC 6? In meiner MVC 4 App verwende ich NICHT die Interface Version und alles funktioniert einwandfrei. – ganders