Chcę to zrobić, Response.Redirect("MyPage.aspx")
ale mam je otworzyć w nowym oknie przeglądarki. Robiłem to wcześniej bez użycia metody skryptu rejestru JavaScript. Po prostu nie pamiętam jak?
c#
asp.net
response.redirect
hims056
źródło
źródło
OnClientClick="aspnetForm.target ='_blank';"
musiałem użyćOnClientClick="document.getElementById('Form').target ='_blank';"
Możesz użyć tego jako metody rozszerzenia
Dzięki temu otrzymujesz ładne zastąpienie rzeczywistego obiektu Response
źródło
Ponieważ Response.Redirect jest inicjowane na serwerze, nie możesz tego zrobić za pomocą tego.
Jeśli możesz pisać bezpośrednio do strumienia odpowiedzi, możesz spróbować czegoś takiego:
źródło
Skonfiguruj swój adres URL za pomocą modułu obsługi zdarzeń kliknięcia:
Następnie:
źródło
Sztuczka fixform jest zgrabna, ale:
Możesz nie mieć dostępu do kodu tego, co ładuje się w nowym oknie.
Nawet jeśli to zrobisz, zależy ci na tym, że zawsze ładuje się, bezbłędnie.
I jesteś zależny od tego, że użytkownik nie kliknie żadnego przycisku, zanim inna strona nie będzie miała szansy załadowania i uruchomienia fixform.
Sugerowałbym zrobienie tego zamiast tego:
I skonfiguruj fixform na tej samej stronie , wyglądającej tak:
źródło
Możesz również użyć w kodzie w ten sposób
źródło
window.open('page.aspx','_blank');
go używasz , nadal otwiera go w nowym oknie z wyłączonym paskiem nawigacyjnym i brakującymi przyciskami nawigacji zamiast nowej karty.Nie jest to możliwe w przypadku Response.Redirect, ponieważ ma to miejsce po stronie serwera i nie może nakazać przeglądarce podjęcia tej akcji. Co zostało w początkowym oknie? Pusta strona?
źródło
wyskakująca metoda zapewni odwiedzającym bezpieczne pytanie.
oto moje proste rozwiązanie: i działające wszędzie.
źródło
Źródło: http://dotnetchris.wordpress.com/2008/11/04/c-aspnet-responseredirect-open-into-new-window/
źródło
Jeśli możesz zmienić strukturę kodu tak, aby nie było potrzeby ogłaszania zwrotnego, możesz użyć tego kodu w zdarzeniu PreRender przycisku:
źródło
Możesz również użyć poniższego kodu, aby otworzyć nową stronę w nowej karcie.
I po prostu wywołaj Response.Redirect ("yourPage.aspx"); zdarzenie za przycisk.
źródło
Zawsze używam tego kodu ... Użyj tego kodu
źródło
Oto wersja jQuery oparta na odpowiedzi @takrl i @tom powyżej. Uwaga: nie ma zakodowanego na stałe formid (o nazwie aspnetForm powyżej), a także nie używa bezpośrednich odniesień do form.target, które Firefox może uznać za problematyczne:
Następnie w pliku js, do którego odwołuje się ta SAMA strona:
źródło
Użyłem Hyperlink zamiast LinkButton i działało dobrze, ma właściwość Target, więc rozwiązało mój problem. Było rozwiązanie z Response.Write, ale to zepsuło mój układ, a ten z ScriptManager, przy każdym odświeżaniu lub z powrotem otwierał ponownie okno. Więc tak to rozwiązałem:
źródło
Możesz użyć Page.RegisterStartupScript, aby upewnić się, że skrypt javascript uruchamia się podczas ładowania strony.
źródło
możesz otworzyć nowe okno z kodu asp.net za pomocą ajax, tak jak ja tutaj http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/
źródło
Żaden z poprzednich przykładów nie działał dla mnie, więc zdecydowałem się opublikować swoje rozwiązanie. W zdarzeniach związanych z kliknięciem przycisku, oto kod.
Musiałem zmodyfikować kod response.redirect innej osoby, aby otworzyć go w nowej przeglądarce.
źródło
Użyłem tego podejścia, nie wymaga to nic robić w wyskakującym okienku (do którego nie miałem dostępu, ponieważ przekierowałem do pliku PDF). Używa również klas.
Aby użyć, dodaj klasę „nowe-okno” do dowolnego elementu. Nie musisz niczego dodawać do tagu body. Ta funkcja konfiguruje nowe okno i naprawia je w tej samej funkcji.
źródło
Zrobiłem to, wstawiając target = "_ blank" w linkbutton
następnie w codebehind pageload ustaw atrybut href:
źródło
HTML
JavaScript:
AND codebehind:
źródło