2012-02-03 5 views
7

जारी किए जाने पर सर्वर फॉर्म की क्रिया = "" को पॉप्युलेट नहीं करता है, मेरे पास मास्टर पेज में सर्वर फॉर्म के साथ एक एएसपीनेट वेबफॉर्म साइट है, क्योंकि सभी पृष्ठों को इसकी आवश्यकता होती है।एएसपीनेट

action पैरामीटर को डीबग करने पर id के साथ रनटाइम पर पॉप्युलेट किया जाता है, लेकिन जब IIS7 के साथ मेरे सर्वर पर तैनात किया जाता है तो यह प्रकट नहीं होता है ... लेकिन अभी भी काम करता है। यह साइट के मुद्दों का कारण नहीं बना रहा है, लेकिन यह मेरी डब्ल्यू 3 सी एचटीएमएल 5 सत्यापन को विफल कर रहा है, क्योंकि इसे पॉप्युलेट करने की आवश्यकता है।

डीबग स्रोत:

<form method="post" action="index.aspx" id="aspnetForm"> 

लाइव स्रोत: masterpage में

<form method="post" action="" id="aspnetForm"> 

फार्म घोषणा:

<form runat="server"> 
.. some divs 
</form> 

मैं नहीं करता है आईडी/कार्रवाई परिभाषित आदि है प्रपत्र टैग पता है, क्योंकि एएसपी रनटाइम पर डिफॉल्ट को कॉन्फ़िगर करता है और यह ठीक है, हालांकि किसी कारण से यह मेरे सर्वर पर गड़बड़ हो जाता है। मैंने पथ नाम प्राप्त करने के लिए action="<% Path etc %>" का उपयोग करने का प्रयास किया है, लेकिन यह काम नहीं करता है।

मैं क्या गलत कर रहा हूं? क्या मुझे कुछ याद आ रहा है, या क्या यह मास्टरपेज में किसी फॉर्म का उपयोग करने के लिए बस खराब अभ्यास है?

धन्यवाद।

अद्यतन

ठीक है, इस मुद्दे को हल करने के लिए इस सवाल का जवाब मैं सिर्फ masterpage Page_Load पर Form.Action सेट में बताया, अंत में मिल गया है जो W3C हरी बत्ती!

नोट: मैं intelligencia Rewriter का उपयोग कर रहा है, लेकिन आप यूआरएल Request.Url

public partial class myMasterPage : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Form.Action = Intelligencia.UrlRewriter.RewriterHttpModule.RawUrl; 
    } 
} 
+0

''

से यह बदलने से करने के लिए '< एएसपी: फॉर्म ...> 'मदद? –

+0

अज्ञात सर्वर टैग 'asp: Form'। – tutts

+0

'पेज.फॉर्म.एक्शन = Request.Url.ToString(); 'Page_Load के अंदर, Intelligencia के बिना, मेरे लिए काम किया। – manafire

उत्तर

7

asp.net 4.0 का उपयोग कर खींच सकते हैं? यदि हां, तो आपका उत्तर यहां दिया गया है: http://www.asp.net/whitepapers/aspnet4/breaking-changes#0.1__Toc256770154; यह एक आसान पठन नहीं है, और मैं खुद को परिचित नहीं हूं, इसलिए आपको शायद इसे पढ़ना चाहिए और देखें कि यह आपकी साइट को कैसे प्रभावित करता है।

+0

अपराधी हुह की तरह दिखता है, कल इसे देखने के लिए काम करेगा, महान खोज हालांकि, धन्यवाद। – tutts

+0

निश्चित रूप से समस्या, हालांकि उस टैग को पॉप्युलेट करने के लिए संघर्ष कर रहा है। web.config, मशीन में कोशिश की।IIS7 मॉड्यूल अनुभाग में कॉन्फ़िगर करें, कमांड लाइन के माध्यम से मैन्युअल रूप से जोड़ना। बुरा सपना! – tutts

4

मैंने देखा कि आपकी पोस्ट में बिल्कुल वही अनुभव था। मेरी राय में यह अनजान डिज़ाइन व्यवहार है जो अनुवर्ती HTML5 को समझने की कोशिश कर रहे नए एएसपी.NET डेवलपर्स के बहुमत के लिए भ्रम लाएगा।

वैसे भी समस्या को छेड़छाड़ करने के बाद निम्नलिखित दृष्टिकोण का उपयोग करके बहुत आसानी से तय किया जा सकता है। web.config के साथ छेड़छाड़ करने की कोई आवश्यकता नहीं है - शुक्र है!

मास्टर पेज में, इस स्निपेट जोड़ने (या डिफ़ॉल्ट पेज जहां इस समस्या पैदा होती है, यदि आप एक मास्टर पृष्ठ उपयोग नहीं कर रहे में)

Protected Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender 
    If Not Page.IsPostBack Then 
     If Page.Form.Action = String.Empty Then 
      Page.Form.Action = Request.Url.AbsoluteUri 
     End If 
    End If 
End Sub 
+0

क्वेरी स्ट्रिंग वाले URL को संभालने के लिए "Page.Form.Action = Request.RawUrl" के साथ गया था। रास्ते को इंगित करने के लिए धन्यवाद! – leqid

+1

यदि कोई इस बाद में आता है, तो EvilDr का उत्तर बिल्कुल सही है, लेकिन AbsolutePath का उपयोग करने के बजाय आपको AbsoluteUri का उपयोग करना चाहिए, या यदि आप उन्हें अपने पृष्ठों में उपयोग करते हैं तो आप क्वेरी स्ट्रिंग खो देंगे। बस इस में भाग गया ... –

+0

हाँ आप काफी सही हैं। जवाब अपडेट किया गया है। डेवलपर्स इस आसान संदर्भ का उपयोग यह जांचने के लिए कर सकते हैं कि कौन सी संपत्ति आवश्यकताओं के आधार पर उपयोग की जा सकती है (http://www.codepal.co.uk/show/Using_RequestUrl_to_find_specific_parts_of_the_web_pages_address) – EvilDr