文本框在发送到网络浏览器之前将“http://”添加到用户输入的内容(例如“google.com”转为“http://google.com”),但是如果用户输入“http://”在他们的网站上出现错误。
这是我的代码:
private void bargo_Click(object sender, RoutedEventArgs e)
{
Uri targetUri = new Uri(System.String.Format("http://{0}", bar.Text));
web.Navigate(targetUri);
}
答案 0 :(得分:2)
您可以测试bar.text是否已经以http://开头,如下所示:
private void bargo_Click(object sender, RoutedEventArgs e)
{
string url = bar.Text;
if (!url.StartsWith("http://"))
{
url = "http://" + url;
}
web.Navigate(new Uri(url);
}
如果您的用户输入“https://”或“ftp://”(或gopher://,irc://,ircs://,ftp://,news://,nntp:/ /,worldwind://,telnet://,svn://,git://,mms://和mailto :)这个方法仍会添加“http://”并失败。
更好的解决方案是将字符串传递给web.Navigate()而不是uri。传入字符串时,WebBrowser控件会自动添加http://,就像浏览器一样。
private void bargo_Click(object sender, RoutedEventArgs e)
{
web.Navigate(bar.Text);
}
编辑:适用于Windows Phone 7
private void bargo_Click(object sender, RoutedEventArgs e)
{
web.NavigateToString(bar.Text);
}
答案 1 :(得分:0)
var culture = System.Globalization.CultureInfo.InvariantCulture.CompareInfo;
if (culture .IsPrefix(textbox.Text, "http://") == false)
textbox.Text = "http://" + textbox.Text;
var regex = new Regex(@"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$");
if (regex.IsMatch(textbox.Text))
{
//Your logic here
}