2010-11-16 17 views
7

Buduję aplikację mvc do raportowania. Mam stronę zawierającą formularz, który zawiera wiele list rozwijanych, aby wybrać niektóre kryteria dla raportu. Mam przycisk wprowadzania danych, aby utworzyć raport. Ten przycisk wywołuje nowy widok z tego samego kontrolera. Nowy widok pobiera wartości ze strony, na której kryteria są wybierane spośród parametrów i zastosowań, które służą do wypełnienia własnego modelu widoku. Wszystko działa dobrze.Nowe okno z użyciem asp mvc w html formie

Chciałbym otworzyć raporty w nowym oknie. Kiedy patrzę na kontroler, wszystkie parametry, które powinny pochodzić ze strony wyboru, są zerowe. Zakładam, że będę musiał je przekazać za pośrednictwem kwerendy, aby zostać odebranym przez kontrolera. Czy istnieje sposób, aby uzyskać wartości listy rozwijanej z mojej strony widoku, aby skonstruować kwerendę?

Czy to dobry sposób na osiągnięcie tego, co próbuję zrobić? Czy lepiej byłoby używać ActionLink zamiast przycisku wprowadzania? czy to ma jakieś znaczenie?

Mam nadzieję, że to wszystko ma sens. Dzięki za wszelkie myśli.

Odpowiedz

29

Po prostu ustaw w formularzu atrybut target na _blank i powinien otworzyć żądanie na nowej stronie/karcie, w zależności od używanej przeglądarki.

<% using (Html.BeginForm(myAction, myController, FormMethod.Post, new { target = "_blank" }) 
    { %> 
     <%-- ... --%> 
<% } %> 
+1

dzięki - to działało idealnie. – czuroski

4

Jak mówi NickLarsen ...

Można użyć atrybutu elementu formularza target="_blank" aby wyświetlić wyniki w nowym oknie.

<form action="/controller/action" method="post" target="_blank"> 

Albo

<% Html.BeginForm("action", "controller", FormMethod.Post, new { target="_blank" }); %> 
    //... 
<% Html.EndForm(); %> 
+0

Przeciążenie 'BeginForm', którego używasz, przyjmuje wartości tras. Czy cel można ustawić w wartościach trasy? Myślałem, że to musi być ustawiony w atrybutach html. Nie próbowałem tego, co napisałeś, po prostu ciekawy. –

+0

@NickLarsen Masz rację, wprowadziłem niewłaściwe przeciążenie. Zaktualizowałem go, aby używać obiektu htmlAttributes –

Powiązane problemy