【问题标题】:HTML anchor with name attribute in ASP.NETASP.NET 中具有名称属性的 HTML 锚点
【发布时间】:2010-09-18 14:47:26
【问题描述】:

我想在我的 asp.net 论坛中的每篇文章中都设置锚点。每个论坛的帖子都使用转发器控件呈现。如何在 asp.net 中呈现<a name="anchor_name"></a>

【问题讨论】:

    标签: html asp.net anchor


    【解决方案1】:

    好的。我是这样解决的:

    <a name='<%# DataBinder.Eval(Container.DataItem, "Id") %>' />
    

    其中 Id 是绑定实体的属性。

    【讨论】:

    • Travis 的 Eval("Id") 是等效的 - 它只是自动拾取 Container.DataItem。
    【解决方案2】:

    扩展 System.Web.UI.WebControls.HyperLink 类,并覆盖 UniqueID 属性以返回实际 ID:

    override string UniqueID { get { return ID; }  }
    

    在转发器的项目模板中使用这个新的用户控件。

    <MyPrefix:MyHyperLink ID="IDOfYourHyperLink" ... />
    

    在 ItemDataBound 上做:

    (e.Item.FindControl("IDOfYourHyperLink") as MyHyperlink).ID = NowIKnowWhatToUseHere;
    

    【讨论】:

      【解决方案3】:

      这不是确切的代码,因为我不在 VS 中以确保语法,但这样的东西应该会让你想去。

      <a name="<%# Bind('PostId') %>" runat="server" />
      

      【讨论】:

      • 这里不需要双向绑定。 eval 就足够了。
      • 我投稿后就想到了。你也不应该需要 runat,但我倾向于在测试时同时使用它们,然后删除它不需要的东西。
      【解决方案4】:

      在中继器的 ItemTempate 中的适当位置添加 &lt;a name="anchor_name"&gt;&lt;/a&gt; 应该可以解决问题。更多信息可能会有所帮助。

      【讨论】:

      • 当然你要把ID放在name属性中!我不明白为什么我得到-1。我们没有得到任何信息。
      【解决方案5】:
      <a name='<%# Eval("PostId") %>' />
      

      其中 PostId 是您希望出现在锚点中的属性的名称。

      【讨论】:

      • 此 PostId 仅在 PostsRepeater_ItemDataBound 事件方法中已知,我应该如何引用它?
      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 2013-07-27
      • 2016-06-02
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2010-10-29
      相关资源
      最近更新 更多