2014-12-02 10 views
8

Próbuję przenieść ten kod na mvc 6, każda pomoc jest doceniana, kod kompiluje się, ale metoda nie jest dostępna w moich widokach na @Html.IsActive.HtmlHelpers w 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" : ""; 
     } 

    } 
} 

w widoku Mam nazw odwołuje:

@using Blah.Web.Helpers; 
+3

masz dodany '@ używając Blah.Web.Helpers' w twoim widoku? –

+1

tak, mam. Przepraszamy za nie publikowanie tych informacji. – RickJames

+7

HtmlHelper powinien być IHtmlHelper –

Odpowiedz

18

w sygnaturze metody, HtmlHelper powinny być IHtmlHelper

patrz przykład poniżej

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

Proszę rozważyć edycję tej odpowiedzi, aby w pierwszym wierszu brzmiało "W metodzie signaure," HtmlHelper "powinno być' IHtmlHelper'. Pomoże to innym użytkownikom w porównywaniu fragmentów kodu kodu Q + A. –

+0

zaktualizuj pytanie tahnks dla rekomendacji –

+0

Czy jest to nowe wymaganie w MVC 6? W mojej aplikacji MVC 4 NIE używam wersji interfejsu i wszystko działa dobrze. – ganders

Powiązane problemy