web-dev-qa-db-fra.com

Comment avoir un lien d'action rasoir ouvert dans un nouvel onglet?

J'essaie d'ouvrir mon lien dans un nouvel onglet (il doit être au format rasoir):

    <a href="@Url.Action("RunReport", "Performance", new { reportView = Model.ReportView.ToString() }, new { target = "_blank" })" type="submit" id="runReport" class="button Secondary">@Reports.RunReport</a>

Cela ne fonctionne pas bien. Quelqu'un sait-il comment faire ça?

62
FairyQueen

On dirait que vous confondez Html.ActionLink () pour rl.Action () . Url.Action n'a pas de paramètre pour définir la cible, car elle ne renvoie qu'une URL.

En fonction de votre code actuel, l'ancre devrait probablement ressembler à ceci:

<a href="@Url.Action("RunReport", "Performance", new { reportView = Model.ReportView.ToString() })" 
   type="submit" 
   id="runReport" 
   target="_blank"
   class="button Secondary">
     @Reports.RunReport
</a>
36
Erik Philips

Utilisez simplement le HtmlHelperActionLink et définissez les RouteValues et HtmlAttributes en conséquence.

@Html.ActionLink(Reports.RunReport, "RunReport", new { controller = "Performance", reportView = Model.ReportView.ToString() }, new { target = "_blank" })
115
Gabe

Cela ne compilera pas car UrlHelper.Action(string,string,object,object) n'existe pas.

UrlHelper.Action générera uniquement des URL basées sur l'action que vous fournissez, et non pas <a> balisage. Si vous voulez ajouter un HtmlAttribute (comme target="_blank", pour ouvrir le lien dans un nouvel onglet), vous pouvez soit:

  • Ajouter l'attribut cible à la <a> élément par vous-même:

    <a href="@Url.Action("RunReport", "Performance",
        new { reportView = Model.ReportView.ToString() })",
        target = "_blank" type="submit" id="runReport" class="button Secondary">
        @Reports.RunReport
    </a>
    
  • Utilisez Html.ActionLink pour générer un <a> élément de balisage:

    @Html.ActionLink("Report View", "RunReport", null, new { target = "_blank" })
    
20
WDRust

Si votre objectif est d'utiliser l'assistant ActionLink et d'ouvrir un nouvel onglet:

@Html.ActionLink("New tab please", "Home", null , new { target = "_blank" })

@Html.ActionLink("New tab please", "Home", Nothing, New With {Key .target = "_blank"})
17
JoshYates1980

Avec des arguments nommés:

@Html.ActionLink(linkText: "TestTab", actionName: "TestAction", controllerName: "TestController", routeValues: null, htmlAttributes: new { target = "_blank"})
4
usefulBee

For

@ Url.Action

<a href="@Url.Action("Action", "Controller")" target="_blank">Link Text</a>
3
Thisara Subath
@Html.ActionLink(
"Pay Now",
"Add",
"Payment",
new { @id = 1 },htmlAttributes:new { @class="btn btn-success",@target= "_blank" } )
2
Abiuth Arun

asp.net mvc nouvel onglet ActionLink avec angular

<a  target="_blank" class="btn" data-ng-href="@Url.Action("RunReport", "Performance")?hotelCode={{hotel.code}}">Select Room</a>
1
sanjeewa

<a href="@Url.Action("RunReport", "Performance", new { reportView = Model.ReportView.ToString() })" type="submit" id="runReport" target="_blank" class="button Secondary"> @Reports.RunReport </a>

0
Faisal

Vous la définissez type comme submit. Cela signifie que le navigateur doit publier votre <form> données sur le serveur.

En fait, une balise n'a pas d'attribut de type selon w3schools .

Si distant type attribut et cela devrait fonctionner pour vous.

0
Sly