2012-06-01 17 views
44

I próbuje dostać mój link, aby otworzyć w nowej karcie (musi być w formacie brzytwa):Jak otworzyć link do brzytwy w nowej zakładce?

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

ta nie działa jednak. Czy ktoś wie, jak to zrobić?

+6

Dlaczego miałbyś niepokoić próby umieszczenia tego w 'Url.Action'? Po prostu wstaw sam tag "". –

Odpowiedz

30

Wygląda na to, że są mylące Html.ActionLink() dla Url.Action(). Url.Action nie ma parametrów do ustawienia celu, ponieważ zwraca tylko adres URL.

podstawie aktualnego kodu, kotwica prawdopodobnie powinien wyglądać następująco:

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

Ustawiasz to jako type jako submit. Oznacza to, że przeglądarka powinna opublikować dane na serwerze.

W rzeczywistości tag ma atrybut type według w3schools.

tak odległe atrybut type i powinny pracować dla Ciebie.

+1

nie będzie miała wiele zaufania w [w3fools] (http://w3fools.com/) – dtsg

+1

pewien, że wszyscy powinni zaufać IE :) – Sly

94

Po prostu użyj HtmlHelperActionLink i odpowiednio ustaw RouteValues i HtmlAttributes.

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

Jest to zalecane podejście jeśli link jest tylko tekst. –

16

To nie będzie kompilować od UrlHelper.Action(string,string,object,object) nie istnieje.

UrlHelper.Action generuje tylko adresy URL na podstawie podanej akcji, a nie znaczników <a>. Jeśli chcesz dodać HtmlAttribute (jak target="_blank", aby otworzyć odnośnik w nowej karcie) można:

  • Dodaj atrybut target do elementu <a> przez siebie:

    <a href="@Url.Action("RunReport", "Performance", 
        new { reportView = Model.ReportView.ToString() })", 
        target = "_blank" type="submit" id="runReport" class="button Secondary"> 
        @Reports.RunReport 
    </a> 
    
  • używać HTML .ActionLink wygenerować element <a> znaczników:

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

To powinna być zaakceptowana odpowiedź – sveilleux2

0

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

14

Jeśli twoim celem jest, aby używać pomocnika actionlink i otworzyć nową kartę:

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

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

z nazwanymi argumentami:

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

asp.net mvc actionlink nową kartę z parametrem kątowym

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