दिलचस्प पोस्ट
सी # एक घटना हैंडलर के लिए अतिरिक्त पैरामीटर पास? क्लासनोटफ़ाउंड एक्सपैशन डिस्पैचरस्पोर्ट टॉमकेट लॉन्च करते समय (मवेन निर्भरताएं wtpwebapps की नकल नहीं की गईं) Google Maps API V3 Infobox.js हटा दिया गया ExecJS और जावास्क्रिप्ट रनटाइम नहीं मिला UIImageView की छवि को बदलते समय फ़ेड / भंग उद्देश्य सी – दो तिथियों के बीच के दिनों की संख्या की गणना जावास्क्रिप्ट में ट्रिम स्ट्रिंग? आईओएस 7 – तालिका दृश्य में एक तिथि पिकर को कैसे प्रदर्शित किया जाए? मैं पायथन में पैरेंट डायरेक्टरी कैसे प्राप्त करूं? लूप का वेक्टरिंग क्यों प्रदर्शन सुधार नहीं करता है सीएसएस का उपयोग कर रेडियो बटन का आकार कैसे बदल सकता है? फोरट्रान और एमपीआई के लिए अच्छा प्रोफाइलर एक स्ट्रिंग में सबसे लंबे समय से दोहराव अनुक्रम ढूंढें MATLAB के MEX कंपाइलर के रूप में जीसीसी (मिनजीडब्ल्यू) का उपयोग करना सर्वश्रेष्ठ प्रदर्शन के साथ सर्वलेट प्रतिक्रिया के लिए चित्र लेखन

प्रतिक्रिया। नई विंडो के लिए रीडायरेक्ट

मैं एक Response.Redirect("MyPage.aspx") करना चाहता हूं लेकिन इसे किसी नए ब्राउज़र विंडो में खोलना है। मैंने जावास्क्रिप्ट रजिस्टर स्क्रिप्ट पद्धति का उपयोग किए बिना यह किया है। मुझे याद नहीं है कि कैसे?

वेब के समाधान से एकत्रित समाधान "प्रतिक्रिया। नई विंडो के लिए रीडायरेक्ट"

मैं सिर्फ जवाब पाया और यह काम करता है 🙂

आपको अपने सर्वर साइड लिंक / बटन को निम्नलिखित जोड़ना होगा:

 OnClientClick="aspnetForm.target ='_blank';" 

मेरा पूरा बटन कोड कुछ ऐसा दिखता है:

 <asp:LinkButton ID="myButton" runat="server" Text="Click Me!" OnClick="myButton_Click" OnClientClick="aspnetForm.target ='_blank';"/> 

सर्वर साइड Response.Redirect("MyPage.aspx"); मैं एक Response.Redirect("MyPage.aspx"); और पृष्ठ एक नई विंडो में खोला गया है।

दूसरे हिस्से जिसे आप जोड़ना है, वह फॉर्म के लक्ष्य को ठीक करना है, अन्यथा प्रत्येक लिंक नई विंडो में खुल जाएगा। ऐसा करने के लिए अपनी POPUP विंडो के शीर्ष लेख में निम्न जोड़ें।

 <script type="text/javascript"> function fixform() { if (opener.document.getElementById("aspnetForm").target != "_blank") return; opener.document.getElementById("aspnetForm").target = ""; opener.document.getElementById("aspnetForm").action = opener.location.href; } </script> 

तथा

 <body onload="fixform()"> 

आप इसे विस्तार विधि के रूप में उपयोग कर सकते हैं

 public static class ResponseHelper { public static void Redirect(this HttpResponse response, string url, string target, string windowFeatures) { if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures)) { response.Redirect(url); } else { Page page = (Page)HttpContext.Current.Handler; if (page == null) { throw new InvalidOperationException("Cannot redirect to new window outside Page context."); } url = page.ResolveClientUrl(url); string script; if (!String.IsNullOrEmpty(windowFeatures)) { script = @"window.open(""{0}"", ""{1}"", ""{2}"");"; } else { script = @"window.open(""{0}"", ""{1}"");"; } script = String.Format(script, url, target, windowFeatures); ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true); } } } 

इसके साथ आपको वास्तविक रिस्पांस ऑब्जेक्ट पर अच्छा ओवरराइड मिलता है

 Response.Redirect(redirectURL, "_blank", "menubar=0,scrollbars=1,width=780,height=900,top=10"); 

चूंकि Response.Redirect को सर्वर पर शुरू किया गया है, आप उस का उपयोग करके इसे नहीं कर सकते।

यदि आप सीधे प्रतिक्रिया धारा में लिख सकते हैं तो आप ऐसा कुछ करने की कोशिश कर सकते हैं:

 response.write("<script>"); response.write("window.open('page.html','_blank')"); response.write("</script>"); 

क्लिक ईवेंट हैंडलर द्वारा अपने यूआरएल को नियंत्रित करें:

 string strUrl = "/some/url/path" + myvar; 

फिर:

 ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "window.open('" + strUrl + "','_blank')", true); 

फिक्सफ़ॉर्म चालन साफ ​​है, लेकिन:

  1. हो सकता है कि आपको नई विंडो में लोड होने वाले कोड की पहुंच न हो।

  2. भले ही आप ऐसा करते हैं, आप इस तथ्य पर निर्भर होते हैं कि यह हमेशा लोड होता है, त्रुटि मुक्त होता है

  3. और आप इस तथ्य पर निर्भर हैं कि उपयोगकर्ता दूसरे बॉक्स पर क्लिक नहीं करेगा इससे पहले कि अन्य पेज को फिक्सफ़ॉर्म लोड और चलाने का मौका मिलता है।

मैं इसके बजाय ऐसा करने का सुझाव दूंगा:

 OnClientClick="aspnetForm.target ='_blank';setTimeout('fixform()', 500);" 

और उसी पृष्ठ पर फिक्सफ़ॉर्म सेट करें, इस तरह दिखें:

 function fixform() { document.getElementById("aspnetForm").target = ''; } 

आप इस तरह से पीछे कोड में भी उपयोग कर सकते हैं

 ClientScript.RegisterStartupScript(this.Page.GetType(), "", "window.open('page.aspx','Graph','height=400,width=500');", true); 

प्रतिक्रिया के साथ यह संभव नहीं है। रीडायरेक्ट के रूप में यह सर्वर साइड पर होता है और आपके ब्राउज़र को उस क्रिया को लेने के लिए निर्देशित नहीं कर सकता। प्रारंभिक विंडो में क्या छोड़ा जाएगा? एक खाली पृष्ठ?

पॉपअप विधि आगंतुक को एक सुरक्षित प्रश्न देगी ..

यहाँ मेरा सरल समाधान है: और हर जगह काम करना

 <script type="text/javascript"> function targetMeBlank() { document.forms[0].target = "_blank"; } </script> 

 <asp:linkbutton runat="server" ID="lnkbtn1" Text="target me to blank dude" OnClick="lnkbtn1_Click" OnClientClick="targetMeBlank();"/> 
 <asp:Button ID="btnNewEntry" runat="Server" CssClass="button" Text="New Entry" OnClick="btnNewEntry_Click" OnClientClick="aspnetForm.target ='_blank';"/> protected void btnNewEntry_Click(object sender, EventArgs e) { Response.Redirect("New.aspx"); } 

स्रोत: http://dotnetchris.wordpress.com/2008/11/04/c-aspnet-responseredirect-open-into-new-window/

यदि आप अपना कोड फिर से बना सकते हैं ताकि आपको पोस्टबैक की आवश्यकता न हो, तो आप इस कोड को बटन के प्रीरेन्डर इवेंट में इस्तेमाल कर सकते हैं:

 protected void MyButton_OnPreRender(object sender, EventArgs e) { string URL = "~/MyPage.aspx"; URL = Page.ResolveClientUrl(URL); MyButton.OnClientClick = "window.open('" + URL + "'); return false;"; } 

आप नए टैब में नए पृष्ठ को खोलने के लिए निम्न कोड का उपयोग भी कर सकते हैं।

 <asp:Button ID="Button1" runat="server" Text="Go" OnClientClick="window.open('yourPage.aspx');return false;" onclick="Button3_Click" /> 

और सिर्फ उत्तर को उत्तर दें। रीडायरेक्ट ("yourpage.aspx"); पीछे बटन घटना

मैं हमेशा इस कोड का उपयोग करता हूं … इस कोड का उपयोग करें

 String clientScriptName = "ButtonClickScript"; Type clientScriptType = this.GetType (); // Get a ClientScriptManager reference from the Page class. ClientScriptManager clientScript = Page.ClientScript; // Check to see if the client script is already registered. if (!clientScript.IsClientScriptBlockRegistered (clientScriptType, clientScriptName)) { StringBuilder sb = new StringBuilder (); sb.Append ("<script type='text/javascript'>"); sb.Append ("window.open(' " + url + "')"); //URL = where you want to redirect. sb.Append ("</script>"); clientScript.RegisterClientScriptBlock (clientScriptType, clientScriptName, sb.ToString ()); } 

@takrl और @tom के ऊपर दिए गए उत्तर के आधार पर यहां एक jQuery का संस्करण है नोट: कोई हार्डकोड फ़ॉर्डेड (ऊपर नामित aspnetForm) और यह भी प्रत्यक्ष form.target संदर्भों का उपयोग नहीं करता है जो फ़ायरफ़ॉक्स समस्याग्रस्त हो सकता है:

 <asp:Button ID="btnSubmit" OnClientClick="openNewWin();" Text="Submit" OnClick="btn_OnClick" runat="server"/> 

फिर अपने जेएस फ़ाइल में उसी पेज पर संदर्भित है:

 function openNewWin () { $('form').attr('target','_blank'); setTimeout('resetFormTarget()', 500); } function resetFormTarget(){ $('form').attr('target',''); } 

मैंने लिंकबटन के बजाय हाइपरलिंक का इस्तेमाल किया और यह ठीक काम किया, इसमें लक्ष्य संपत्ति है, इसलिए यह मेरी समस्या का समाधान करता है। रिस्पांस के साथ समाधान था। विइट, लेकिन यह मेरे लेआउट को गड़बड़ कर रहा था, और स्क्रिप्ट मैनेजर के साथ, हर रिफ्रेश या बैक में खिड़की को फिर से खोलना था। तो इस प्रकार मैंने इसे हल किया है:

 <asp:HyperLink CssClass="hlk11" ID="hlkLink" runat="server" Text='<%# Eval("LinkText") %>' Visible='<%# !(bool)Eval("IsDocument") %>' Target="_blank" NavigateUrl='<%# Eval("WebAddress") %>'></asp:HyperLink> 

पृष्ठ लोड पर जावास्क्रिप्ट आग सुनिश्चित करने के लिए आप Page.RegisterStartupScript का उपयोग करना चाह सकते हैं।

आप एजेक्स का उपयोग करने के पीछे एएसपीएक्स कोड से नई विंडो खोल सकते हैं जैसे मैंने यहां किया था http://alexandershapovalov.com/open-new-window-from-code-behind-in-aspnet-68/

 protected void Page_Load(object sender, EventArgs e) { Calendar1.SelectionChanged += CalendarSelectionChanged; } private void CalendarSelectionChanged(object sender, EventArgs e) { DateTime selectedDate = ((Calendar) sender).SelectedDate; string url = "HistoryRates.aspx?date=" + HttpUtility.UrlEncode(selectedDate.ToShortDateString()); ScriptManager.RegisterClientScriptBlock(this, GetType(), "rates" + selectedDate, "openWindow('" + url + "');", true); } 

पिछले उदाहरणों में से कोई भी मेरे लिए काम नहीं करता, इसलिए मैंने अपना समाधान पोस्ट करने का निर्णय लिया। बटन क्लिक करें इवेंट्स में, यहां पीछे कोड है।

 Dim URL As String = "http://www.google/?Search=" + txtExample.Text.ToString URL = Page.ResolveClientUrl(URL) btnSearch.OnClientClick = "window.open('" + URL + "'); return false;" 

किसी नए ब्राउज़र में खोलने के लिए मुझे किसी और की प्रतिक्रिया को संशोधित करना था।

मैंने इस दृष्टिकोण का इस्तेमाल किया, यह आपको पॉपअप पर कुछ भी करने की आवश्यकता नहीं है (जो मेरे पास एक्सेस नहीं थी क्योंकि मैं एक PDF फ़ाइल में पुनः निर्देशित था)। यह कक्षाएं भी उपयोग करता है

 $(function () { //--- setup click event for elements that use a response.redirect in code behind but should open in a new window $(".new-window").on("click", function () { //--- change the form's target $("#aspnetForm").prop("target", "_blank"); //--- change the target back after the window has opened setTimeout(function () { $("#aspnetForm").prop("target", ""); }, 1); }); }); 

उपयोग करने के लिए, किसी भी तत्व को "नया विंडो" वर्ग जोड़ें आपको शरीर टैग में कुछ भी जोड़ने की आवश्यकता नहीं है यह फ़ंक्शन नई विंडो सेट करता है और इसे उसी फ़ंक्शन में ठीक करता है।

मैंने लिंकबटन में लक्ष्य = "_ रिक्त" डालकर ऐसा किया

 <asp:LinkButton ID="btn" runat="server" CausesValidation="false" Text="Print" Visible="false" target="_blank" /> 

तो codebehind pageload में सिर्फ href विशेषता सेट करें:

 btn.Attributes("href") = String.Format(ResolveUrl("~/") + "test/TestForm.aspx?formId={0}", formId)