所以,我想从用户输入创建一个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);
}
Aaand工作得很好。但是,仅当用户类型使用“http://”时才会出现。问题是:没有人写完整个链接,只有“google.com”应用程序崩溃。
我可以检查用户输入中是否有类似“http”的内容并手动添加...但感觉就像我尝试重新发明轮子一样。
答案 0 :(得分:4)
使用UriBuilder
class。它的String构造函数默认为HTTP
协议:
private void ok_tap(object sender, System.Windows.Input.GestureEventArgs e)
{
Uri address = new UriBuilder(AdressBox.Text).Uri;
web.Navigate(address);
}
答案 1 :(得分:0)
URI的一部分是要使用的协议,因此当用户未提供时,您需要执行某些操作。您的验证想法似乎合适,如果没有给出其他内容,请尝试“http://”。如果没有域后缀,您也可以添加“.com,.org,.net”。这不是重新发明轮子,只需要在需要的地方使用圆圈。无论如何,您应该防止应用程序因不完美的用户输入而崩溃。