【问题标题】:ASP.NET Hyperlink control not render href on ascx webpartASP.NET 超链接控件不在 ascx webpart 上呈现 href
【发布时间】:2016-11-19 04:07:27
【问题描述】:

我在 .ascx 上有一个超链接控件,如下所示:

<asp:HyperLink ID="hDocument" NavigateUrl="http://www.google.com" Text="Delegate Approval" Target="_blank" runat="server"></asp:HyperLink>

但是,当我导航到应该显示此 URL 的 SharePoint 页面时,超链接不可点击,并且 HTML 锚标记 () 中没有 href,如下所示:

<a id="ctl00_ctl40_g_65ace0cb_fdf4_4d40_ae31_9736b2d39022_gvLevel1Approvals_ctl02_hDocument" target="_blank">Delegate Approval</a>

我在 Hyperlink 控件下放置了一个普通的 HTML 锚点,它工作正常。我不知道为什么 Hyperlink 控件在呈现时不生成 href 属性。

编辑:

这是原始代码:

<asp:HyperLink ID="hDocument" runat="server"></asp:HyperLink>

后面的代码

HyperLink hDocument = (HyperLink)e.Row.FindControl("hDocument");
hDocument.Text = "Delegate Approval";
hDocument.NavigateUrl = // builiding URL here;
hDocument.Target = "_blank";

【问题讨论】:

    标签: asp.net sharepoint


    【解决方案1】:

    我遇到了同样的问题,只能通过在 Code Behind 中(在 Page_Load 中)设置 NavigateUrl 来解决。

    【讨论】:

    • 我们的原始代码在后面的代码中设置了 NavigateUrl 并且它不起作用。我将它切换到 .ascx 页面,以便更基本地查看它是否可以工作。
    【解决方案2】:

    所以我们的情况是它只能间歇性地工作,但 95% 的时间它都不起作用。其他一切都很好:在后面的代码中构建 URL,设置链接文本,一切。我们无法弄清楚为什么 href 不会显示在客户端浏览器的页面上。最后我最终切换到使用常规的 HTML 锚标记并添加到 System.Web.UI.HtmlControls 命名空间中以找到锚并在后面的代码中修改它。

    【讨论】:

      【解决方案3】:

      我找到了解决办法。

      在 VB.net 中

      HyperLink1.Attributes.Add("href", "http://www.clarin.com")
      

      在我的情况下,Visual Studio 将 ASPX 转换为 HTML5。 当 VS 将文档转换为 HTML 时——如果你执行一些调试——你会看到:

      <a NavigateURL="someurl" blablabla
      

      但在 HTML 中找不到 NavigateURL

      您必须将属性 NavigateURL 替换为 href

      我不知道这是否是编译器错误,但这是我能找到的唯一合理的解决方案。

      【讨论】:

        猜你喜欢
        • 2013-01-16
        • 2010-09-17
        • 2020-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        • 1970-01-01
        相关资源
        最近更新 更多