从用户输入创建Uri

本文关键字:Uri 创建 输入 用户 | 更新日期: 2023-09-27 17:52:50

所以,我想从用户输入创建一个Uri。我有一个文本框,一个Ok按钮和web浏览器控件。

用户写下他想要的网址,点击按钮并启动getUri方法。

我试着创建这样的东西:

private void ok_tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Uri address = new Uri(AdressBox.Text, UriKind.Absolute);
    web.Navigate(address);
}

它工作得很好。但是,只有当用户使用"http://"输入地址时。问题是:没有人写完整的链接,只有"google.com"的应用程序崩溃。

我可以检查是否有类似"http"的东西在用户输入和手动添加…但我感觉我是在重新发明轮子。

从用户输入创建Uri

使用UriBuilder类。它的String构造函数默认为HTTP协议:

private void ok_tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Uri address = new UriBuilder(AdressBox.Text).Uri;
    web.Navigate(address);
}

URI的一部分是要使用的协议,因此您需要在用户没有给出时执行某些操作。您的验证想法似乎是合适的,如果没有给出其他内容,请尝试使用"http://"。如果没有域名后缀,你也可以加上"。com,.org,.net"。这不是重新发明轮子,只是在需要的地方用了一个圆圈。无论如何,你应该防止不完美的用户输入导致应用崩溃。