2008-10-31 13 views
5

पर एक पृष्ठ कैसे पोस्ट करें मैं क्लासिक एएसपी पेज में कुछ फॉर्म चर पोस्ट करना चाहता हूं। मैं क्लासिक एएसपी पृष्ठों को बदलना नहीं चाहता, क्योंकि काम की मात्रा की आवश्यकता होगी, और उन पृष्ठों की मात्रा जो उन्हें उपभोग करते हैं।एएसपीनेट से क्लासिक एएसपी

क्लासिक एएसपी पृष्ठ फॉर्म चर उपयोगकर्ता नाम और उपयोगकर्ता पासवर्ड को सबमिट करने की अपेक्षा करता है।

username = Request.Form("UserName") 
userpassword = Request.Form("Userpassword") 

यह फिर विभिन्न कार्यों को करता है और एएसपी आवेदन में जाने के बाद सत्र स्थापित करता है।

मैं इन चरों को एएसपी.NET से पृष्ठ में सबमिट करना चाहता हूं, लेकिन लॉगिन नियंत्रण उपयोगकर्ता नियंत्रण और टेम्पलेट्स के अंदर घोंसला है, इसलिए मुझे फॉर्म तत्व के नाम "उपयोगकर्ता नाम" और "उपयोगकर्ता पासवर्ड" नहीं मिल सकते हैं।

कोई विचार?

+0

आप कभी भी इस एक क्लासिक एएसपी पृष्ठ पर पोस्टिंग काम करने के लिए मिला? मुझे रिमोटपोस्ट ऑब्जेक्ट में चाबियाँ पंजीकृत करने के लिए सबकुछ मिल गया है, लेकिन बाद में क्लासिक एएसपी पेज पर उन्हें पुनर्प्राप्त नहीं किया जा सकता है। –

उत्तर

4

आप वास्तव में एक पोस्ट को "आगे" नहीं कर सकते, जैसा कि आप करना चाहते हैं (अपने ओपी में)। ग्राहक को आपके एएसपी पेज पर पोस्ट शुरू करना होगा (जो आपकी दूसरी पोस्ट में कोड कर रहा है)।


यहाँ है, तो आप एक जवाब चिह्नित कर सकते हैं अपने खुद के जवाब से आत्म पोस्टिंग कोड है जैसे आप का सुझाव दिया:

public class RemotePost{ 
    private System.Collections.Specialized.NameValueCollection Inputs 
    = new System.Collections.Specialized.NameValueCollection() ; 

    public string Url = "" ; 
    public string Method = "post" ; 
    public string FormName = "form1" ; 

    public void Add(string name, string value){ 
     Inputs.Add(name, value) ; 
    } 

    public void Post(){ 
     System.Web.HttpContext.Current.Response.Clear() ; 

     System.Web.HttpContext.Current.Response.Write("<html><head>") ; 

     System.Web.HttpContext.Current.Response.Write(string .Format("</head><body onload=\"document.{0}.submit()\">" ,FormName)) ; 

     System.Web.HttpContext.Current.Response.Write(string .Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >" , 

     FormName,Method,Url)) ; 
      for (int i = 0 ; i< Inputs.Keys.Count ; i++){ 
      System.Web.HttpContext.Current.Response.Write(string .Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,Inputs.Keys[i],Inputs[Inputs.Keys[i]])) ; 
     } 
     System.Web.HttpContext.Current.Response.Write("</form>") ; 
     System.Web.HttpContext.Current.Response.Write("</body></html>") ; 
     System.Web.HttpContext.Current.Response.End() ; 
    } 
} 
+0

यह एक अच्छी पोस्ट है। यदि आप नीचे से प्रासंगिक कोड के साथ उत्तर का विवरण देते हैं तो मैं इसे उत्तर के रूप में चिह्नित करूंगा (आप अपने उत्तरों को स्वीकृत उत्तर के रूप में चिह्नित नहीं कर सकते हैं) - तब तक जब तक किसी और को बेहतर उत्तर नहीं मिलता है। – digiguru

0

मुझे यह another site पर मिला।

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

public class RemotePost{ 
    private System.Collections.Specialized.NameValueCollection Inputs 
    = new System.Collections.Specialized.NameValueCollection() ; 

    public string Url = "" ; 
    public string Method = "post" ; 
    public string FormName = "form1" ; 

    public void Add(string name, string value){ 
     Inputs.Add(name, value) ; 
    } 

    public void Post(){ 
     System.Web.HttpContext.Current.Response.Clear() ; 

     System.Web.HttpContext.Current.Response.Write("<html><head>") ; 

     System.Web.HttpContext.Current.Response.Write(string .Format("</head><body onload=\"document.{0}.submit()\">" ,FormName)) ; 

     System.Web.HttpContext.Current.Response.Write(string .Format("<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >" , 

     FormName,Method,Url)) ; 
      for (int i = 0 ; i< Inputs.Keys.Count ; i++){ 
      System.Web.HttpContext.Current.Response.Write(string .Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,Inputs.Keys[i],Inputs[Inputs.Keys[i]])) ; 
     } 
     System.Web.HttpContext.Current.Response.Write("</form>") ; 
     System.Web.HttpContext.Current.Response.Write("</body></html>") ; 
     System.Web.HttpContext.Current.Response.End() ; 
    } 
} 
+0

पासवर्ड को वापस अनएन्क्रिप्टेड भेजने के बारे में चिंता न करें - आखिरकार, यह आपके लिए आया है। साथ ही, आपको गैर-जेएस उपयोगकर्ताओं को क्लिक करने के लिए सबमिट बटन और वहां एक संदेश डालना चाहिए। –

+0

धन्यवाद मार्क। अगर कोई इसकी संपूर्णता में उत्तर पोस्ट करता है, तो मैं जवाब स्वीकार करूंगा। – digiguru

1

एएसपीनेट लॉगिन नियंत्रण (यदि आप हैं) का उपयोग न करें।

अपने उपयोगकर्ता नियंत्रण में उपयोगकर्ता नाम/पासवर्ड बक्सें के लिए

उपयोग सरल एचटीएमएल runat = "सर्वर" बिना:

<input type="text" name="UserName" /> 

<input type="password" name="Userpassword" /> 

<asp:Button ID="btnLogin" runat="server" PostBackUrl="Destination.asp" /> 

को आप क्लासिक एएसपी यूआरएल और सभी बटन पर PostBackUrl प्रॉपर्टी सेट ठीक होना चाहिए।

+0

ठीक है - लेकिन मैं अनुमान लगा रहा हूं कि मैं उन्हें सबमिट करने से पहले उपयोगकर्ता नाम और उपयोगकर्ता पासवर्ड के लिए वालस के साथ कुछ भी सर्वर पक्ष नहीं कर सकता? – digiguru