目前我有以下在ButtonClick上运行的代码:
Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow",
"window.open('" + DocumentData.Tables[0].Rows[0]["WebAddress"].ToString()
+ "','_blank');", true);
它打开弹出窗口,其中包含来自DataBase的给定链接(通常是指向文档或图像或视频的链接)。 但我需要稍微修改一下代码,我不知道应该使用哪种方法:
1)我需要检查url是否真的存在(如果URL是响应的),如果不是不打开弹出窗口,但显示一些消息。在这里我不知道如何检查Url是否存在?例如,如果url类似于www.thesitedoesntexists.com,则不要加载弹出窗口。
2)如果网址格式为www.yahoo.com而不是http://www.yahoo.com或https://someurl.com,则上述内容无效。
如果我的网络应用程序为www.myapplication.com
,则在上面的方案系统中,系统会打开网址www.myapplication.com/www.yahoo.com
而不是www.yahoo.com
。怎么处理呢?它可能与问题#1有某种关系。这是主要问题。
答案 0 :(得分:1)
以下代码(未经测试)应完成以下任务:
按钮点击处理程序代码:
string url = DocumentData.Tables[0].Rows[0]["WebAddress"].ToString();
string script;
if (!string.IsNullOrEmpty(url))
{
// prepend http to url if it isn't there.
if(!url.ToLower().StartsWith("http://") || !url.ToLower().StartsWith("https://"))
{
url = "http://" + url;
}
// verify URL exists:
if (UrlExists(url))
{
script = "window.open('" + url + "','_blank');";
}
else
{
script = "alert('URL does not exist')";
}
}
else
{
script = "alert('No URL specified!')";
}
Page.ClientScript.RegisterStartupScript(this.GetType(), "WindowScript", script, true);
并在您的班级中定义以下网址检查方法:
public static bool UrlExists(string url)
{
try
{
var request = WebRequest.Create(url) as HttpWebRequest;
if (request == null) return false;
request.Method = "HEAD";
using (var response = (HttpWebResponse)request.GetResponse())
{
return response.StatusCode == HttpStatusCode.OK;
}
}
catch (UriFormatException)
{
//Invalid Url
return false;
}
catch (WebException)
{
//Unable to access url
return false;
}
}
我完全赞同UrlExists方法: http://paigecsharp.blogspot.ca/2011/01/verify-url-exists.html