asp:超链接导航url添加url的相对路径

时间:2013-06-28 08:35:21

标签: c# html asp.net

我在aspx页面中有一个Asp:Hyperlink,我正在动态设置文本和导航网址,但是当页面渲染时,它会在渲染的href中添加我网站的相对路径。我不知道为什么?

ASPX

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

CODE-BEHIND(页面加载事件)

//Getting data from database

charityNameText.Text = entryDetails.RegisteredCharityName;
charityNameText.NavigateUrl = "www.facebook.com";
charityNameText.Target = "_blank";

呈现HTML

<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.

播放帮助

3 个答案:

答案 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

希望有所帮助