0

ボタンのクリックを使用して、新しいタブ/ウィンドウでページを開こうとしています。これに似た解決策を見てきましたが、そこに示されている答えは、リンクを使用するか、同じウィンドウで開くかのいずれかです。フォームに入力された基準データ (文字列操作) に基づいてリンクを生成する必要があるため、ボタンを使用する必要があります。ただし、このボタンはフォームを送信していません。外部サイトのデータの一部を検証しているだけです。フォームと検証サイトの間を行き来できるように、別のウィンドウまたはタブでこれが必要です。これは基本的に私の現在のButton_Clickイベントです:

var Address = AddressTextbox.Text.Trim();
Address = Address.Replace(' ', '+');
var Url = "http://www.example.com/query?text=" + Address + "&param1=foo&param2=bar";
Response.Redirect(Url);

Response.Redirect(Url)これは、新しいウィンドウではなく、同じウィンドウでのみ開く ことを除いて機能します。

4

2 に答える 2

6

Button の Click イベント ハンドラから JavaScript コードを吐き出すだけです。

var Address = AddressTextbox.Text.Trim();
Address = Address.Replace(' ', '+');
var Url = "http://www.example.com/query?text=" + Address + "&param1=foo&param2=bar";
Page.ClientScript.RegisterStartupScript(this.GetType(), "dsadas", "window.open('"+Url+"');", true);
于 2012-05-10T16:04:57.490 に答える
3

OnClientClick次の属性を使用します。

<script type="text/javascript">
    redirectToPage = function(url){
        void(window.open(url, "child_window"));
        return false;
    }
</script>
<asp:Button ID="Button1" runat="server"
    Text="Click Me!"
    OnClientClick="return redirectToPage('/somefolder/somepage.aspx');" />

属性を使用する場合、最後OnClientClickに を覚えておくことが重要return falseです。そうしないと、ボタンのクリックによってポストバックがトリガーされます。

編集

クリック イベント ハンドラーから新しいウィンドウを開きたい場合は、次のようにすることができます。

protected void Button1_Click(object sender, EventArgs e)
{
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "open_window", 
        string.Format("void(window.open('{0}', 'child_window'));", "/somefolder/somepage.aspx"), true);
}

確かに、これは見苦しいですが、ボタン クリック ロジックが実行されるまで得られない特定の情報がある場合は、これが最善の選択肢かもしれません。ボタンがクリックされる前に URL を作成できる方法がある場合はOnClientClick、コード ビハインドで割り当てることができます。

于 2012-05-10T15:57:14.857 に答える