2014-12-02 16 views
8

Tôi đang cố gắng chuyển mã này qua mvc 6, bất kỳ trợ giúp nào được đánh giá cao, mã biên dịch nhưng phương pháp này không có sẵn trong chế độ xem của tôi trên @Html.IsActive.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" : ""; 
     } 

    } 
} 

Trong Xem tôi có không gian tên tham chiếu:

@using Blah.Web.Helpers; 
+3

có bạn thêm '@ sử dụng Blah.Web.Helpers' trong chế độ xem của bạn? –

+1

vâng tôi có. Xin lỗi vì không đăng thông tin đó. – RickJames

+7

HtmlHelper phải là IHtmlHelper –

Trả lời

18

Trong phương pháp chữ ký, HtmlHelper nên IHtmlHelper

xem ví dụ dưới đây

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

Vui lòng xem xét chỉnh sửa câu trả lời này để dòng đầu tiên đọc nội dung như 'Trong phương thức signaure, 'HtmlHelper' phải là' IHtmlHelper'. Điều này sẽ giúp người dùng khác so sánh mã Q + A đoạn mã. –

+0

cập nhật câu hỏi tahnks cho đề xuất –

+0

Đây có phải là yêu cầu mới trong MVC 6 không? Trong ứng dụng MVC 4 của tôi, tôi KHÔNG sử dụng phiên bản giao diện và mọi thứ đều hoạt động tốt. – ganders

Các vấn đề liên quan