繁体   English   中英

在自定义ActionLink帮助器MVC中使用条件HTML属性

[英]Using Conditional HTML Attributes in Custom ActionLink Helper MVC

我正在使用自定义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; } 

    }

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

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM