在自定义ActionLink Helper MVC中使用条件HTML属性

时间:2015-01-02 20:06:34

标签: javascript css razor razor-2

我正在使用自定义HTML操作链接帮助程序,并想知道是否可以在操作链接帮助程序的文本部分中实现条件属性功能。我已经定义了一个CSS类来格式化列表的li元素。当我在Helper的文本部分中静态定义它时,它可以工作。

然而,我想要的是这样的东西

@Html.MyActionLink("<li>Foo\@IsCurrentPage("Page1")\</li>",...

是否可以以这种方式插入函数IsCurrentPage。我已经尝试使用帮助器的HTML属性,但它似乎适用于我只想设置

  • 的样式。我应该重新关注通过帮助程序HTML属性。或者以这种方式使用函数?

    这是相关代码。

    助手:

     public static IHtmlString MyActionLink(
        this HtmlHelper htmlHelper,
        string linkText,
        string action,
        string controller,
        object routeValues,
        object htmlAttributes
    )
        {
            var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
            var anchor = new TagBuilder("a");
            anchor.InnerHtml = linkText;
            anchor.Attributes["href"] = urlHelper.Action(action, controller, routeValues);
            anchor.MergeAttributes(new RouteValueDictionary(htmlAttributes));
            return MvcHtmlString.Create(anchor.ToString());
        }
    
    
        }
    

    帮助实施:

    @Html.MyActionLink(
                    "<li>Foo</li>",
                    "MyAction",
                    "MyController",
                    null,
                    null
                    )
    

    条件属性函数:

    @functions {
    public static string CurrentPage(string page)
    {
        return HttpContext.Current.Request.Url.ToString().Contains(page) ? "active-tab" : null;
    }
    

    }

  • 1 个答案:

    答案 0 :(得分:0)

    由于HTML MyActionLink助手定义了以字符串形式传入的文本,因此我只处理字符串。可以使用要连接的项之间的“+”符号将字符串连接在一起。我用来确定在li标签中使用哪个类的函数是用Razor表示法定义的,可以在我创建的字符串的两个部分之间注入。