MVC 6中的HtmlHelpers

8

我正在尝试将这段代码移植到MVC 6,需要帮助,感谢。代码可以编译通过,但是在我的视图中@Html.IsActive方法不可用。

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" : "";
        }

    }
}

在 View 中,我引用了命名空间:

@using Blah.Web.Helpers;

3
你的视图中是否已经添加了 @using Blah.Web.Helpers - Dmitry Pavliv
1
是的,我有。抱歉没有发布那个信息。 - RickJames
7
HtmlHelper 应该改为 IHtmlHelper。 - user2095880
1个回答

19

在方法签名中,HtmlHelper 应该改为 IHtmlHelper

见下面的示例

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
请考虑编辑此答案,使第一行类似于“在方法签名中,HtmlHelper 应该改为 IHtmlHelper。这将有助于其他用户比较 Q + A 代码片段。” - Stafford Williams
这是MVC 6的新要求吗?在我的MVC 4应用程序中,我没有使用接口版本,一切都运行良好。 - ganders
1
是的,只适用于 .net core。 - Son_of_Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接