2009-03-10 30 views
7

पर एस्पनेटफॉर्म की एक्शन विशेषता को कैसे बदलें हम मुख्य पृष्ठ में मुख्य एएसपी.NET फॉर्म की एक्शन विशेषता को गतिशील रूप से संशोधित करने का प्रयास कर रहे हैं।मास्टरपेज गतिशील रूप से

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

हम इसके लिए जावास्क्रिप्ट का उपयोग करने की कोशिश कर रहे थे।

document.forms[0].action = "option1.aspx"; 
document.forms[0].submit(); 

लेकिन यह काम किया जाना प्रतीत नहीं होता है, वहाँ कार्रवाई विशेषता पर कोई प्रभाव नहीं है।

अगर हम एक मास्टर पृष्ठ का उपयोग नहीं करते, इस का उपयोग करते हुए

this.Form.Action = "option1.aspx"; 
ClientScript.RegisterStartupScript(this.GetType(),"test1", 
    "document.form[0].submit();",true); 

दुख की बात है, हम नहीं कर सकते मास्टर पृष्ठ को हटाने के द्वारा आसानी से प्राप्त किया जा सकता .. यह कैसे प्राप्त किया जा सकता पर किसी भी संकेत दिए गए ..?

उत्तर

5

यह कुछ ऐसा है जो मैंने पढ़ा है कि वे चाहते हैं कि उन्होंने नहीं किया था। फॉर्म टैग को हार्डकोडेड एक्शन एट्रिब्यूट मिल जाता है। रनटाइम पर इसके निर्माण को नियंत्रित करने के लिए आपको नियंत्रण एडाप्टर का उपयोग करना होगा। मैं विशेष रूप से यूआरएल रिवाइटिंग के लिए इसका उपयोग करता हूं, जब मुझे पोस्टबैक यूआरएल की आवश्यकता होती है जिसे मैंने लिखा है। स्कॉट गु इसके लिए कोड बनाया है और आप इसे यहाँ पा सकते हैं:

http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_HttpModule1.zip

और लेख के लिए पता:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

+0

अच्छा लगा। वास्तव में मुझे क्या चाहिए। +1 – Neil

+0

+1 सहायक। इस पर आधारित, मैंने सर्वर-आधारित फॉर्म को हटा दिया और कुछ क्लासिक HTML किया। – JDB

0

प्रपत्र जिसके परिणामस्वरूप मूल्यों उत्तीर्ण करने की आवश्यकता है पृष्ठ? यदि नहीं, तो आप सही पृष्ठ पर Response.Redirect का उपयोग क्यों नहीं करते?

protected void btnSubmit_Click(object sender, EventArgs ags) { 
     switch (lstOptions.SelectedValue) { 
      case "option1": 
       Response.Redirect("~/option1.apsx"); 
       break; 
      //etc 
     } 
} 

तुम क्यों तुम भी वापस सब पर एक पोस्ट को ट्रिगर कर रहे मूल्यों से गुजरना होगा, तो: उदाहरण के लिए, आप उपयोग कर रहे एक RadioButtonList lstOptions बुलाया मानते हुए? ऐसा लगता है जैसे आप जावास्क्रिप्ट का उपयोग करके जो चाहते हैं उसे पूरा कर सकते हैं। उदाहरण आपके प्रपत्र मानते लिए नामित किया गया है Form1 और अपने रेडियो बटन विकल्पों का एक नाम है:

<input type="submit" value="Submit" onclick="javascript:submitForm()" /> 

<script type="text/javascript"> 
    function submitForm() { 
     for (var i=0; i < document.form1.options.length; i++) { 
     if (document.form1.options[i].checked) { 
      document.forms[0].action = "option" + i + ".aspx"; 
      document.forms[0].submit(); 
     } 
     } 
    } 
</script> 
+0

हाँ मुझे यह पेज .. इसलिए मैं सिर्फ अनुप्रेषित नहीं कर सकते से मूल्यों को प्राप्त करने के लिए .. मैं विकल्प 2 लेकिन इसके कि जिस तरह से भी काम नहीं कर रहा .. प्लस पृष्ठ का नाम उपयोग करने की कोशिश के लिए कार्रवाई घटना वास्तव में पर उत्पन्न होता है की जरूरत है केवल रन रन .. तो यह सीधे नहीं है .. हालांकि मदद के लिए धन्यवाद .. :) –

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