2014-06-16 8 views
6

में एक छिपी हुई फ़ील्ड में एक मान सेट करना मुझे एएसपी.NET 4.5 में एक छिपी हुई फ़ील्ड में मूल्य निर्धारित करने में कुछ समस्याएं हैं।एएसपी.NET 4.5

ASPX में:

<asp:HiddenField ID="HiddenField" runat="server" value="" /> 
<script type="text/javascript"> 
    function SetHiddenField() { 
     var vv = "HELLO WORLD"; 
     document.getElementById('<%=HiddenField.ClientID%>').value = vv;    
    } 
</script> 

में कोड-पीछे:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true); 
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + HiddenField.ClientID + "');", true); 

इस में कचरा अलर्ट

मैं क्या देखा है मैं किसी भी भाग्य के बिना निम्नलिखित की कोशिश की है से

क्लाइंट आईडी

मैंने जो अन्य समाधान किया है वह निम्नलिखित है।

.aspx में:

<asp:HiddenField ID="HiddenField" runat="server" value="" /> 
<script type="text/javascript"> 
    function SetHiddenField() { 
     var vv = "HELLO WORLD"; 
     document.getElementById('HiddenField').value = vv;    
    } 
</script> 

यहां मुद्दा यह है कि .value IntelliSense, केवल .ValueOf में मौजूद नहीं है है।

कोड-पीछे में:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true); 
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + HiddenField.Value + "');", true); 

कुछ भी नहीं है के बाद से कोई चेतावनी दिखाया गया है, होता है शायद जावास्क्रिप्ट में एक त्रुटि,।

क्या कोई मुझे सही दिशा में इंगित कर सकता है, कृपया?

+1

अपने दूसरे उदाहरण में अपने छिपे हुए क्षेत्र पर 'ClientIDMode = "स्टेटिक" ' –

उत्तर

6

आपका पहला मार्कअप अच्छा है:

<asp:HiddenField ID="HiddenField" runat="server" value="" /> 
<script type="text/javascript"> 
    function SetHiddenField() { 
     var vv = "HELLO WORLD"; 
     document.getElementById('<%=HiddenField.ClientID%>').value = vv; 
    } 
</script> 

बदलें इस के लिए कोड (चेक दूसरी पंक्ति):

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true); 
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert(document.getElementById('" + HiddenField.ClientID + "').value);", true); 

और आउटपुट इस तरह होना चाहिए:

enter image description here

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

<script type="text/javascript"> 
    function SetHiddenField() { 
     var vv = "HELLO WORLD"; 
     document.getElementById('<%=HiddenField.ClientID%>').value = vv; 
     __doPostBack('<%=HiddenField.ClientID%>', '') 
    } 
</script> 

और कोड में मेरी Page_Load है नीचे की तरह: आप अभी भी ग्राहक आईडी से तत्व प्राप्त करने के लिए जब तक आप गुण सेट है

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     // Register JavaScript which will collect the value and assign to HiddenField and trigger a postback 
     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true); 
    } 
    else 
    { 
     //Also, I would add other checking to make sure that this is posted back by our script 
     string ControlID = string.Empty; 
     if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"])) 
     { 
      ControlID = Request.Form["__EVENTTARGET"]; 
     } 
     if (ControlID == HiddenField.ClientID) 
     { 
      //On postback do our operation 
      string myVal = HiddenField.Value; 
      //etc... 
     } 
    } 

} 
+0

बिल्कुल सही, मुझे अब सही आउटपुट मिलता है। धन्यवाद। मुद्दा अब यह है कि मैं कोड-बैक फ़ाइल में उस मान को कैसे प्राप्त करूंगा। इसे प्रदर्शित करने के लिए एक नया जावास्क्रिप्ट फ़ंक्शन बनाना मुझे बहुत मदद नहीं करेगा। धन्यवाद। – user1782815

+0

कोड निष्पादित होने के बाद स्क्रिप्ट चलाएगी और पृष्ठ प्रस्तुत किया जाएगा। इसलिए, यदि आप मूल्य तक पहुंचना चाहते हैं, तो आपको कोड पर वापस जाना होगा। एक बटन जोड़ें और बटन में ईवेंट को छिपे हुए फ़ील्ड मान तक पहुंचें क्लिक करें: 'string myVal = HiddenField.Value;'। – afzalulh

+0

क्षमा करें, मैं एएसपी.नेट से बहुत परिचित नहीं हूं। अद्यतन मूल्य प्राप्त करने के लिए पृष्ठ पर एक पोस्टबैक को मजबूर करना एकमात्र तरीका है? मुझे जो चाहिए वह मास्टर पेज पर लोड इवेंट में लाने के लिए मूल्य है, क्योंकि डब्ल्यूसीएफ सेवा के संदर्भ को जोड़ने के लिए मूल्य की आवश्यकता है। धन्यवाद। – user1782815

4

छिपी हुई फ़ील्ड टैग में जोड़ने clientid इस तरह स्थिर -

<asp:HiddenField ID="HiddenField" runat="server" value="" ClientIDMode="Static" /> 

इस तरह ASP.Net गतिशील आईडी के साथ यह जगह नहीं होगी और हमेशा आईडी आपके द्वारा प्रदान किया है, तो यह अब आईडी HiddenField होगा । फिर आपका दूसरा प्रयास काम करना चाहिए।

अधिक यहां पाया जा सकता -

http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx

+0

बढ़िया, मैं एक कदम करीब हो सकता हूं।मैंने अभी कोशिश की है, लेकिन मैं क्लाइंट आईडी अपडेट नहीं कर सकता या इसे कोई मान निर्धारित नहीं कर सकता (क्योंकि यह स्थिर है मुझे लगता है)। मूल्य 'छुपा हुआ' है। – user1782815