2

所以,我想根据用户输入创建一个 Uri。我有一个文本框、一个确定按钮和网络浏览器控件。

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

我试图创建这样的东西:

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

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

我可以检查用户输入中是否有类似“http”的内容并手动添加......但感觉就像我试图重新发明轮子。

4

2 回答 2

4

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

private void ok_tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Uri address = new UriBuilder(AdressBox.Text).Uri;
    web.Navigate(address);
}
于 2013-01-14T16:04:32.323 回答
0

URI 的一部分是要使用的协议,所以当用户没有给出它时,你需要做一些事情。您的验证想法似乎很合适,如果没有给出其他内容,请尝试“http://”。如果没有域后缀,您也可以添加“.com、.org、.net”。这不是重新发明轮子,只是在需要的地方使用一个圆圈。无论如何,您应该防止应用程序因不完善的用户输入而崩溃。

于 2013-01-14T16:09:07.263 回答