2011-04-29 9 views
13

में एक व्यूबैग सरणी को इटरेट करना लक्ष्य ViewBag.Array से डेटा को जावास्क्रिप्ट सरणी में प्राप्त करना है। डेटा को नियंत्रक में गणना की जाती है, इसलिए मैं इसे सीधे डेटाबेस से नहीं ला सकता हूं। मुझे jqplot के साथ चार्ट खींचने के लिए डेटा चाहिए। कोड:एमवीसी: जावास्क्रिप्ट

for(i = 0; i < @ViewBag.Array.Length; i++) 
{ 
    jScriptArray[i] = @ViewBag.Array[i]; 
} 

समस्या @ViewBag.Array[i] में " 'मैं' वर्तमान संदर्भ में मौजूद नहीं है" है, लेकिन jScriptArray[i] में कोई समस्या नहीं है। किसी भी मदद की सराहना की है।

उत्तर

36

आप निम्न कोशिश कर सकते हैं:

var array = @Html.Raw(Json.Encode(@ViewBag.Array)); 
for(var i = 0; i < array.length; i++) { 
    jScriptArray[i] = array[i]; 
} 
+2

यह एक ऐसा किया। धन्यवाद, मेरा दिन बचाया। – Esa

+1

दो आयामी सरणी के बारे में कैसे? इस तकनीक का उपयोग यह एक आयामी समाप्त होता है। –

+0

@JohnMeyer क्या आपने अभी तक दो आयाम व्यूबैग सरणी के साथ काम करने का तरीका निकाला है? –

-1

अपने लक्ष्य को प्राप्त करने का सबसे अच्छा तरीका एक JSON नियंत्रक कि एक JSON सरणी में डेटा रिटर्न तैयार करना है।

अपने जावास्क्रिप्ट से आप डेटा का अनुरोध कर सकते हैं और फिर इसे संसाधित कर सकते हैं।

आशा इस मदद करता है

+0

नहीं, यह [किया जा सकता है] (http://stackoverflow.com/questions/5830549/mvc-iterating-a-viewbag-array-in-javascript/5830594#5830594)। इसके लिए JSON लौटने वाले नियंत्रक को बनाने की आवश्यकता नहीं है। –

+0

क्षमा नहीं किया जा सकता है, लेकिन जावास्क्रिप्ट सर्वर-साइड संचार के लिए व्यूबैग का उपयोग करने से जेएसओएन नियंत्रक का उपयोग करना बेहतर है। 'जावास्क्रिप्ट -> सर्वर 'संचार के लिए – alexl

+1

हाँ, यह बेहतर है, मैं सहमत हूं। लेकिन यहां हम 'सर्वर -> जावास्क्रिप्ट 'संचार के बारे में बात कर रहे हैं। सर्वर ने पहले से ही एक दृश्य मॉडल को दृश्य में भेजा है, यह जेएसओएन को केवल इस मॉडल को क्रमबद्ध करने के लिए अतिरिक्त AJAX अनुरोध करने में बुरा होगा, जब यह सीधे किया जा सकता है। –

0
<script> 
var jScriptArray=[]; 
@{ 
    for(i = 0; i < ViewBag.Array.Length; i++){ 
     <text>jScriptArray[@i] = "@ViewBag.Array[@i]";</text> 
     i++; 
    } 
    } 
</script> 

आप html फ़ाइल में कुछ इस तरह से खत्म हो जाएगा:

jScriptArray[0] = "ArrayValue0"; 
jScriptArray[1] = "ArrayValue1"; 
jScriptArray[2] = "ArrayValue2"; 
संबंधित मुद्दे