我在aspx页面中有一个Asp:Hyperlink,我正在动态设置文本和导航网址,但是当页面渲染时,它会在渲染的href中添加我网站的相对路径。我不知道为什么?
<asp:HyperLink runat="server" ID="charityNameText"></asp:HyperLink>
//Getting data from database
charityNameText.Text = entryDetails.RegisteredCharityName;
charityNameText.NavigateUrl = "www.facebook.com";
charityNameText.Target = "_blank";
<a id="ctl00_PageContent_CompetitionsEntries_ctl06_charityNameText" href="../../ConLib/Custom/www.facebook.com" target="_blank">save the childrens</a>
../../ConLib/Custom/ is the path where this file is located.
播放帮助
答案 0 :(得分:3)
您的案例有不同的解决方案。 我最好的方法是使用System.UriBuilder类。
String myUrl = "www.facebook.com";
UriBuilder builder = new UriBuilder(myUrl);
charityNameText.NavigateUrl = builder.Uri.AbsoluteUri;
UriBuilder将您案例中的协议(HTTP)添加到您正在加载的URL中,并使用完整的URL初始化Uri类的实例。使用AbsoluteUri属性。
对于更复杂的情况,您可以使用Regex:
String myUrl = "www.facebook.com";
System.Text.RegularExpressions.Regex url = new System.Text.RegularExpressions.Regex(@"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.MatchCollection matches = url.Matches(myUrl);
foreach (System.Text.RegularExpressions.Match match in matches)
{
string matchedUrl = match.Groups["url"].Value;
Uri uri = new UriBuilder(matchedUrl).Uri;
myUrl = myUrl.Replace(matchedUrl, uri.AbsoluteUri);
}
答案 1 :(得分:1)
您必须将协议添加到URL的开头:
http://wwww.facebook.com
答案 2 :(得分:0)
我认为你应该使用http://www.facebook.com
希望有所帮助