web-dev-qa-db-fra.com

C # Target = "_ blank" dans un LinkButton

est-il possible d'avoir un target="_blank" dans LinkButton... la mienne ne semble pas fonctionner

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

Ou devrais-je utiliser un format de bouton différent?

17
user979331

Vous pouvez utiliser comme ceci avec le bouton Lien

Remplacer target="_blank" à OnClientClick="window.document.forms[0].target='_blank';".

33
Devsainii

Aucune des réponses actuelles n'est correcte, même le <a> tag n'est pas la bonne réponse dans asp.net.

Utilisez le bouton HyperLink. Il existe même une propriété pour l'attribut cible.

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

Vous pouvez utiliser le contrôle Hyperlink, qui a un target='_blank' propriété. Cependant, si vous devez utiliser un contrôle LinkButton, vous pouvez ajouter un attribut OnClientClick qui appelle ensuite une fonction JavaScript pour ouvrir une fenêtre contextuelle

window.open();
7
skub

Je travaillais avec la réponse de Devsaninii où j'ai changé la cible du formulaire et trouvé le comportement indésirable du reste de mes pages basculant vers une nouvelle fenêtre après avoir cliqué sur un lien qui a changé la cible. Ce qui était logique mais n'était pas souhaitable.

J'ouvrais des fichiers avec des liens et chargeais de nouvelles pages avec d'autres. Je voulais que les fichiers s'ouvrent dans de nouvelles fenêtres et je voulais que les nouvelles pages s'ouvrent dans la même fenêtre. Mais après avoir changé la cible, tout était dans une nouvelle fenêtre. J'aurais pu passer à travers et ajouter un gestionnaire de clics client à chaque linkbutton, mais c'était trop lourd.

Voici donc ce que j'ai trouvé:

J'ai ajouté une classe à mon linkbuttons qui était censée avoir une nouvelle fenêtre comme cible puis j'ai ajouté ce petit morceau de jQuery à mon script:

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

Maintenant, quand un linkbutton qui devrait avoir une nouvelle fenêtre est pressé, il s'ouvre dans une nouvelle fenêtre, et quand n'importe quoi d'autre est pressé, il s'ouvre dans la même fenêtre.

4
Pow-Ian

Un LinkButton dans les formulaires Web ASP.NET soumet simplement le formulaire sous-jacent à l'aide de JavaScript, de sorte que target = "_ blank" ne fait rien. Pour ouvrir une nouvelle fenêtre, vous pouvez à la place modifier la propriété cible du "formulaire" via JavaScript à l'aide de l'événement OnClientClick du LinkButton. Vous devez également annuler la modification après le clic (à l'aide d'un setTimeout), sinon d'autres clics sur les boutons cibleront involontairement un nouvel onglet.

<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