1

現在、ButtonClick で実行される次のコードがあります。

Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenWindow", 
"window.open('" + DocumentData.Tables[0].Rows[0]["WebAddress"].ToString() 
                + "','_blank');", true);

データベースから指定されたリンクを含むポップアップ ウィンドウを開きます (通常は、ドキュメント、画像、またはビデオへのリンクです)。しかし、コードを少し変更する必要があり、どのメソッドを使用すればよいかわかりません。

1) URL が実際に存在するかどうか (URL が応答するかどうか) を確認する必要があり、そうでない場合はポップアップを開かずにメッセージを表示する必要があります。ここで URL が存在するかどうかを確認する方法がわかりませんか? たとえば、URL が www.thesitedoesntexists.com のようなものである場合、ポップアップを読み込まないでください。

2) URL の形式がhttp://www.yahoo.comまたはhttps://someurl.comではなく www.yahoo.com の場合、上記は機能しません。

私の Web アプリケーションが上記のシナリオにある場合、システムはの代わりにwww.myapplication.comurl を開きます。それに対処する方法は?質問#1と何らかの形で関連している可能性があります。そして、これが主な問題です。www.myapplication.com/www.yahoo.comwww.yahoo.com

4

1 に答える 1

2

次のコード (未テスト) は、これらのタスクを実行する必要があります。

  1. URLが定義されていることを確認します
  2. http:// または https:// であることが保証されます
  3. URL が存在することを HttpRequest で確認します
  4. URL が読み込まれたポップアップ ウィンドウが表示されるか、URL が未定義または存在しない場合は警告が表示されます。

ボタン クリック ハンドラ コード:

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);

クラスで次の URL チェック メソッドを定義します。

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

于 2012-10-18T14:46:13.113 に答える