如何解决明确将链接视为绝对链接?
| 我在一个页面上有一个控件,该控件接受一些用户输入(URL),并允许用户测试链接。<asp:HyperLink ID=\"HyperLink1\" runat=\"server\" NavigateUrl=\'<%# Eval(\"URL\") %>\' Target=\"_blank\">Click here to test link</asp:HyperLink>
问题是,如果用户输入URL \“ google.com \”,则该链接将被视为\“ http://localhost/google.com \”。我必须将\“ http://www.google.com \”放到正确的位置。
是否有可能在所有情况下都将链接视为绝对链接?
解决方法
尝试这个...
NavigateUrl=\'<%# Eval(\"URL\",\"http://{0}\") %>\'
编辑:如果要添加,请检查它是否已经包含http://
,然后应该像。
NavigateUrl=<%# Eval(\"URL\").ToString().Contains(\"http://\") == true ? Eval(\"URL\") :
\"http://\" + Eval(\"URL\") %>
, 这是学术性质的问题还是您有待解决的问题?
首先,http://www.google.com是正确的地方,而http://localhost/google.com是不正确的概念是非常错误的。
我所看到的是您的问题。
从数据源中提取URL时,ASP.NET Framework会将原始URL识别为相对URL。但是您希望他们使用其绝对uri。
但是问题不在于框架,因为http://localhost/google.com可能是有效的URL。
建站网站就是一个很好的例子。它具有有效的网址,例如http://builtwith.com/facebook.com
因此,问题出在您输入数据的地方。为什么不能放置一个小的组合,以便用户可以轻松添加协议,然后将URL附加到它,如下所示?
希望这可以帮助。
, 根据您的评论:
如果它是安全(https)站点或FTP站点怎么办?
和
那行得通吗?如果输入中已经有“ 4”怎么办?如果它是安全(https)站点或FTP站点怎么办?
和
问题是,如果用户输入URL \“ google.com \”,则该链接将被视为\“ http://localhost/google.com \”。我必须将\“ http://www.google.com \”放到正确的位置。
是否有可能在所有情况下都将链接视为绝对链接?
您在寻求魔术。我们不在这里专门研究魔术。您必须指定一些内容,使您知道它可以成为特定类型的域。告诉他们如果他们没有指定协议,您将使用http://,其余时间由他们来指定协议。这就是您所能做的。
至于确定是否有协议,请检查string.Contains(\"://\")
,因为这或多或少是浏览器要执行的操作。
, 在后面的代码中,检查用户输入是否包含\“ http:// \”,如果不包含,则将其附加。您也可以使用JavaScript来执行此操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。