2009-05-12 23 views
11

मेरे पास एक ऐसा फॉर्म है जो कभी-कभी कुछ क्वेरी स्ट्रिंग पैरामीटर से जुड़ा होता है। समस्या यह है कि जब मैं फॉर्म को वापस पोस्ट करता हूं, क्वेरी स्ट्रिंग पैरामीटर अभी भी वहां है। यह वास्तव में एक मुद्दा नहीं है जिस तरह से मैंने इसे सेटअप किया है, लेकिन मुझे यह पसंद नहीं है, और अगर आपको किसी निश्चित क्रम में इनपुट की जांच करने की आवश्यकता है तो यह एक समस्या हो सकती है।क्या वापस पोस्ट करते समय क्वेरी स्ट्रिंग पैरामीटर को साफ़ करने का कोई तरीका है?

क्या क्वेरी स्ट्रिंग पैरामीटर को एक आसान, साफ तरीके से साफ़ करने का कोई तरीका है? मुझे पता है कि मैं बटन पर PostBackURL बदल सकता हूं, लेकिन यह बहुत प्रभावी प्रतीत नहीं होता है।

उत्तर

12

नहीं, मैंने इसे रीडायरेक्ट किए बिना इसे साफ़ करने का कोई तरीका नहीं देखा है।

+1

यहां वही। –

+0

क्या आपके पास वर्तमान में जिस पृष्ठ पर Response.Redirect() करने का कोई साफ तरीका है? –

+3

आज़माएं: Response.Redirect (Request.CurrentExecutionFilePath()) – rvarcher

3

आप कुछ मामलों में Server.Transfer() विधि का उपयोग कर सकते हैं, जिसमें एक अधिभार है जो आपको यह निर्दिष्ट करने की अनुमति देता है कि क्वेरीस्ट्रिंग और फ़ॉर्म डेटा संरक्षित किया जाना चाहिए या नहीं।

5

इसे अपने पृष्ठ के नीचे रखें?

<script language="javascript" type="text/javascript"> 
    document.forms[0].action = window.location.pathname; 
</script> 
+0

या कोड-पीछे से: form1.Action = Request.Url.GetLeftPart (UriPartial.Path); – user764754

7

मुझे लगता है कि आपने अपने स्वयं के प्रश्न का उत्तर दिया है। PostBackURL प्रॉपर्टी का उपयोग करें।

<asp:Button PostBackUrl='<%# Request.ServerVariables["URL"] %>' runat="server" Text="Submit" /> 

या

foreach (Control ctrl in Page.Controls) 
{ 
    if (ctrl is Button) 
    { 
     ((Button)ctrl).PostBackUrl = Request.ServerVariables["URL"]; 
    } 
} 
3

की तरह कुछ मुझे लगता है कि आप किसी कारण से Page.IsPostBack पर भरोसा नहीं कर सकते हैं?

क्या आप कर रहे हैं सर्वर साइड है, तो यह आसान अपने तरीके (Page_Load, OnInit, आदि) और केवल querystrings प्रसंस्करण अगर यह एक पोस्ट वापस नहीं है (यानी प्रारंभिक अनुरोध में IsPostBack का एक चेक को जोड़ने के लिए है)।

3

मैं सिर्फ मैं इस स्निपेट मिला है एक ही समस्या भर में और वेब पर कुछ शिकार के बाद आया:

public void ClearQueryStrings() 
{ 
    string clientCommand = string.Format(
     "document.forms[\"{0}\"].action = \"{1}\";", 
     this.Form.Name, Request.Url.Segments[Request.Url.Segments.Length - 1]); 

    ClientScript.RegisterStartupScript(this.GetType(), "qr", clientCommand, true); 
} 

मैं ClearQueryStrings() मेरी Page_Load में फोन के बाद मैं मूल क्वेरी स्ट्रिंग पैरामीटर को संसाधित कर रहा हूँ। जब पृष्ठ वापस पोस्ट करता है, तो पैरामीटर चले जाते हैं।

Original article is here.

-1
using System.Collections; 
using System.Reflection; 

क्वेरी स्ट्रिंग पैरामीटर साफ करने के लिए निम्न कोड का प्रयोग करें।

// To clear Query string value 
PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 

// make collection editable 
isreadonly.SetValue(this.Request.QueryString, false, null); 

// remove 
this.Request.QueryString.Remove("YourQueryStringParameter"); 
4

मैं एक ही मुद्दे से फंस गया था।

मैं निम्नलिखित कोड का उपयोग कर ब्लॉक इसे हल:

private void ClearQueryString() 
{ 
    PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 
    isreadonly.SetValue(this.Request.QueryString, false, null); 
    this.Request.QueryString.Remove("Action"); 
    this.Request.QueryString.Remove("param1"); 
    this.Request.QueryString.Remove("paramN"); 
} 
0

यह तरीका नहीं है कि आप क्या एक रीडायरेक्ट कहेंगे, लेकिन यह निश्चित रूप से क्वेरी स्ट्रिंग मिटा देगा। बस अपने जावा स्क्रिप्ट कोड के अंत करने के लिए इस पंक्ति जोड़ें:

window.location.search = ""; 

या

अपने HTML पृष्ठ के अंत करने के लिए इस जोड़ें:

<script type="text/javascript"> 
    window.location.search = ""; 
</script> 
जहां कोड डालने के आधार पर

, क्वेरी स्ट्रिंग को मिटाने का समय बदल जाएगा।

0
PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 
    // make collection editable 
isreadonly.SetValue(this.Request.QueryString, false, null); 
    // remove 

this.Request.QueryString.Remove("status"); 
+0

क्या यह नहीं है कि अधिकांश अन्य उत्तर पहले से ही सुझाव दे रहे हैं? –

0

आप मेरे लिए काम कर प्रयास कर सकते हैं Response.Redirect(Request.CurrentExecutionFilePath()); इसकी।

संबंधित मुद्दे

 संबंधित मुद्दे