加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 我可以在超链接上显式指定NavigateUrl吗?

发布时间:2020-12-31 00:30:12 所属栏目:asp.Net 来源:互联网
导读:Asp.Net非常聪明,并尝试解析超链接的NavigateUrl相对于它位于或相对于应用程序根目录的控件,如果您在开始时放置/. 但是我有一个情况,我想明确地将URL设置为相对路径,我不希望它“帮助”我. 超链接的导航url和HtmlAnchor的href属性都表现出这种行为. 是否可以

Asp.Net非常聪明,并尝试解析超链接的NavigateUrl相对于它位于或相对于应用程序根目录的控件,如果您在开始时放置/.

但是我有一个情况,我想明确地将URL设置为相对路径,我不希望它“帮助”我.

超链接的导航url和HtmlAnchor的href属性都表现出这种行为.
是否可以阻止这种行为 – 或者我必须手动生成标记,而不是使用控件?

例如
我的文件夹[appRoot] / foo / bar中包含asp:超链接的用户控件.
我在页面[appRoot] /myPage.aspx中使用控件.
我想要超链接的href属性,当渲染时,完全等于’donkey.gif’.

但如果我写下列内容

<asp:Hyperlink runat="server" NavigateUrl="donkey.gif" />

那么渲染的href将是’foo / bar / donkey.gif’.

由于复杂的原因,我宁愿不进入这里,使用“/ donkey.gif”也不是一个选择.
另外,我不能使用ResolveUrl(string url)来生成一个绝对urls.

解决方法

你不能简单地使用HTML锚(没有runat =“server”属性)?例如:
<a href="relative.htm">link text</a>

更新:如果您不想失去HyperLink控件的功能,您可以创建一个从HyperLink派生的控件,并覆盖AddAttributesToRender()方法(这是NavigateUrl已解决的地方).

HyperLink.AddAttributesToRender()如下所示:

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
    ...
    string navigateUrl = this.NavigateUrl;
    if (navigateUrl.Length > 0 && base.IsEnabled)
    {
        string str = base.ResolveClientUrl(navigateUrl);
        writer.AddAttribute(HtmlTextWriterAttribute.Href,str);
    }
    ...
}

自定义HyperLink控件:

public class MyHyperLink : HyperLink
{
  protected override void AddAttributesToRender(HtmlTextWriter writer)
  {
    if ((base.Enabled && !base.IsEnabled) && base.SupportsDisabledAttribute)
    {
      writer.AddAttribute(HtmlTextWriterAttribute.Disabled,"disabled");
    }
    base.AddAttributesToRender(writer);
    if (this.NavigateUrl.Length > 0 && base.IsEnabled)
    {
      writer.AddAttribute(HtmlTextWriterAttribute.Href,this.NavigateUrl);
    }
    if (this.Target.Length > 0)
    {
      writer.AddAttribute(HtmlTextWriterAttribute.Target,this.Target);
    }
  }
}

(编辑:大庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读