【问题标题】:Quick question. Html.ActionLink and creating Internal Links ( #home, #about, etc. )快速提问。 Html.ActionLink 和创建内部链接(#home、#about 等)
【发布时间】:2010-06-16 19:57:46
【问题描述】:

快速提问...

如何最好地创建内部链接?这是我想要实现的标记:

<h3>Title</h3>
<ul>
  <li><a href="#prod1">Product 1</li>
  <li><a href="#prod2">Product 2</li>
  <li><a href="#prod3">Product 3</li>
  ...
  <li><a href="#prod100">Product 100</li>
</ul>

<div id="prod1">
  <!-- content here -->
</div>

使用我正在使用的 MVC 2,最好使用的 Html Helper 是什么?

<h3><%= Html.Encode(Model.Title) %>
<ul>

<% foreach ( var item in Model.Categories ) {%>
    <li><%= Html.RouteLink( item.Description, ???? ) %></li>
<%} %>

</ul>

获取内部链接网址的最佳方式是什么? String.Format 从头开始​​的链接?一定有更好的办法。

【问题讨论】:

    标签: asp.net-mvc model-view-controller asp.net-mvc-2 html-helper hyperlink


    【解决方案1】:
    public static TagBuilder LocalAnchor(this HtmlHelper helper, string anchor, string text)
    {
        var tag = new TagBuilder("a");
        tag.MergeAttribute("href", "#" + anchor);
        tag.SetInnerText(text);
        return tag;
    }
    

    【讨论】:

    • 我假设你会这样使用它:Html.LocalLink("anchor","name") 但它会返回一个错误。请原谅我对 MVC 的无知...
    • 错误是什么?我在 Spark 视图引擎中使用它没有任何问题。顺便说一句,它是 LocalAnchor
    • 抱歉,我的其他 Html 方法返回字符串而不是 TagBuilders。我改变了这个,现在它似乎可以工作了。
    【解决方案2】:

    ">

    路由功能不适用于内部链接;你必须自己生成它们。

    【讨论】:

    • &lt;%: 是 Asp.Net 4 语法。在 3.5 中将是 &lt;%= Html.Encode(item.Category) %&gt;。不过,感谢您确认我的怀疑。
    • 真的吗?这很奇怪......我不记得它对我有用。我将不得不再试一次!
    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2011-04-11
    • 2018-09-06
    • 2020-12-24
    相关资源
    最近更新 更多