asp.net – 我可以在超链接上显式指定NavigateUrl吗?
| 
                         Asp.Net非常聪明,并尝试解析超链接的NavigateUrl相对于它位于或相对于应用程序根目录的控件,如果您在开始时放置/. 但是我有一个情况,我想明确地将URL设置为相对路径,我不希望它“帮助”我. 超链接的导航url和HtmlAnchor的href属性都表现出这种行为. 例如 但如果我写下列内容 <asp:Hyperlink runat="server" NavigateUrl="donkey.gif" /> 那么渲染的href将是’foo / bar / donkey.gif’. 由于复杂的原因,我宁愿不进入这里,使用“/ donkey.gif”也不是一个选择. 解决方法你不能简单地使用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);
    }
  }
}                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- asp.net – 如何从复选框列表中获取最新的选定值?
 - asp.net – 请求在IIS工作进程中存在于RequestAcquireState
 - asp.net – Ajax Control Toolkit正在加载太多脚本资源
 - 来自ASP.NET MVC站点的“无效的JSON原语:alihack”错误
 - asp.net-ajax – ASP.Net AJAX UpdatePanel无法触发Selecte
 - asp.net-mvc – 在部署MVC 2 Web应用程序时要绝对检查的事项
 - asp.net – 为每个网站/应用程序创建单独的IIS应用程序池的
 - asp.net-core – “netcoreapp1.0”是一个不受支持的框架.
 - 在MVC中使用Json.Net序列化和反序列化Json对象
 - asp.net – 获得“System.Web.Mvc.Html.MvcForm”一页
 
