web-dev-qa-db-ja.com

LinkBut​​tonのC#Target = "_ blank"

target="_blank" in LinkButton...鉱山が機能していないようです

<asp:LinkButton runat="server" ID="g31" Text="PDF" 
    CommandArgument='<%# DataBinder.Eval(Container.DataItem,"productID") %>'
    CommandName='<%# DataBinder.Eval(Container.DataItem,"documentID") %>'
    OnCommand="linkbutton_showpdf" target="_blank">
</asp:LinkButton>

または、別のボタン形式を使用する必要がありますか?

17
user979331

リンクボタンでこんな風に使えます

置換target="_blank"からOnClientClick="window.document.forms[0].target='_blank';"

33
Devsainii

現在の回答はどれも、<a>タグはasp.netでは正しい答えではありません。

HyperLinkボタンを使用します。ターゲット属性のプロパティもあります。

<asp:HyperLink runat="server" 
    NavigateUrl='http://rrs.com/aspx/Equipment/EquipmentType.aspx'
    Target="_blank">
        Create/Edit Part Types
</asp:HyperLink>
20
M H

target='_blank'プロパティを持つハイパーリンクコントロールを使用できます。ただし、LinkBut​​tonコントロールを使用する必要がある場合は、OnClientClick属性を追加して、JavaScript関数を呼び出してポップアップウィンドウを開くことができます。

window.open();
7
skub

私はフォームのターゲットを変更したDevsaniniiの回答を使用していて、ターゲットを変更したリンクをクリックした後、残りのページが新しいウィンドウに切り替わるという望ましくない動作を見つけました。これは理にかなっていますが、望ましくありませんでした。

いくつかのリンクを含むファイルを開き、他のページを新しいページにロードしていました。ファイルを新しいウィンドウで開き、新しいページを同じウィンドウで開きたいと思っていました。しかし、ターゲットを変更した後、すべてが新しいウィンドウに表示されました。私はすべてのlinkbuttonにクライアントクリックハンドラーを追加して追加することもできましたが、それは面倒でした。

だからここに私が思いついたものがあります:

新しいウィンドウをターゲットとして持つはずのクラスをlinkbuttonsに追加し、次にこのjQueryの小さな部分をスクリプトに追加しました。

$(function() {
    $('a').click(function() {
        if ($(this).hasClass('changeTarget')) {
            window.document.forms[0].target = '_blank';
        } else {
            window.document.forms[0].target = '_self';
        }
    });
});

新しいウィンドウが必要なlinkbuttonを押すと、新しいウィンドウで開き、他の何かを押すと、同じウィンドウで開きます。

4
Pow-Ian

ASP.NET WebフォームのLinkBut​​tonは、JavaScriptを使用して基になるフォームを送信するだけなので、target = "_ blank"は実際には何もしません。新しいウィンドウを開くには、LinkBut​​tonのOnClientClickイベントを使用して、JavaScriptを介して「フォーム」のターゲットプロパティを変更します。また、(setTimeoutを使用して)クリック後に変更を元に戻す必要があります。そうしないと、ボタンをさらにクリックすると、意図せずに新しいタブがターゲットになります。

<asp:LinkButton ID="uiNewTabExample" Text="Open New Tab" OnClick="uiNewTabExample_Click" OnClientClick="window.document.forms[0].target = '_blank'; setTimeout(function () { window.document.forms[0].target = '' }, 0);" 
runat="server" />
0
WDuffy