【问题标题】:'System.UriFormatException' in HyperLink超链接中的“System.UriFormatException”
【发布时间】:2014-04-19 07:04:47
【问题描述】:

我有一些这样的字符串:

www.example.com/sdWqaP

twitter.com/sdfks

并希望将它们分配给HyperLink

var hyperlink = new Hyperlink
{
   NavigateUri = new Uri(url),
   TargetName = "_blank",
};

如果 url 以 http:// 开头,它可以正常工作,否则抛出 UriFormatException

更新www.google.com 之类的网址无效 http 网址。没有比var url = "http://" + "www.google.com"更好的方法吗

【问题讨论】:

    标签: c# windows-phone


    【解决方案1】:

    你可以使用

    var uri = new UriBuilder(s).Uri;
    

    参考:http://msdn.microsoft.com/en-us/library/y868d5wh(v=vs.110).aspx

    public UriBuilder(
        string uri
    )
    // If uri does not specify a scheme, the scheme defaults to "http:".
    

    【讨论】:

      【解决方案2】:

      Scheme(在您的情况下为http://)是Uri 字符串的必需部分。如果 uri 字符串中指定的方案没有按照Uri.CheckSchemeName() 方法正确形成,则会抛出UriFormatException

      [MSDN : Uri Constructor (String)]

      我不太明白你的意思是什么“更好更安全的方式”。无论如何,在 uri 字符串中附加方案是常见的做法。

      【讨论】:

      • 感谢@har07。我的 url 字符串可能没有 http:// 作为示例,我的问题是如何附加该方案?没有比var url = "http://" + "www.google.com"更好的方法吗?
      【解决方案3】:

      检查您的 URL 是否有效,然后分配给该 URL

      要验证 URL,请检查以下链接

      How to check whether a string is a valid HTTP URL?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-20
        • 2021-10-24
        • 2012-08-30
        • 2011-03-13
        • 2016-11-03
        • 2011-03-06
        • 2011-08-17
        • 1970-01-01
        相关资源
        最近更新 更多