2012-04-04 8 views
20

से मेरे प्रयास किए गए तरीकों से व्यूबैग तक कैसे पहुंच सकता हूं।मैं जेएस

ब्राउज़र के माध्यम से जे एस को देखते हुए, @ViewBag.CC सिर्फ खाली है ... (लापता)

 var c = "#" + "@ViewBag.CC"; 
     var d = $("#" + "@ViewBag.CC").value; 
     var e = $("#" + "@ViewBag.CC").val(); 

     var c = "@ViewBag.CC"; 
     var d = $("@ViewBag.CC").value; 
     var e = $("@ViewBag.CC").val(); 

उत्तर

48

यदि आप उपयोग कर रहे हैं उस्तरा इंजन टेम्पलेट उसके बाद निम्न

आपके विचार लिखने में कार्य करें:

<script> var myJsVariable = '@ViewBag.MyVariable' </script> 

अद्यतन: एक और अधिक उपयुक्त तरीका मास्टर पर विन्यास का एक सेट को परिभाषित करने के लिए है उदाहरण के लिए लेआउट, बेस यूआरएल, फेसबुक एपीआई कुंजी, अमेज़ॅन एस 3 बेस यूआरएल, आदि ... `` `

<head> 
<script> 
    var AppConfig = @Html.Raw(Json.Encode(new { 
    baseUrl: Url.Content("~"), 
    fbApi: "get it from db", 
    awsUrl: "get it from db" 
    })); 
</script> 
</head> 

और तुम इस प्रकार अपना JavaScript कोड में इसका इस्तेमाल कर सकते हैं:

<script> 
    myProduct.fullUrl = AppConfig.awsUrl + myProduct.path; 
    alert(myProduct.fullUrl); 
</script> 
+4

'

2

ViewBagसर्वर साइड कोड है।
Javascriptग्राहक पक्ष कोड है।

आप वास्तव में उन्हें कनेक्ट नहीं कर सकते हैं।

आप कुछ इस तरह कर सकते हैं:

var x = $('#' + '@(ViewBag.CC)').val(); 

लेकिन यह सर्वर पर पार्स हो जाएगा, तो आप वास्तव में उन्हें कनेक्ट नहीं किया।

+0

मुझे लगता है कि आप एक अतिरिक्त ब्रैकेट है? मैंने इस तरह की कोशिश की लेकिन '' – Doomsknight

+0

@Doomsknight। ''' '' '' '' वही बात है। क्या यह काम करता है? – gdoron

+0

रन टाइम पर मैं 'var c = $ (' # '+' 2 ') देखता हूं। वैल(); ' – Doomsknight

5
<script type="text/javascript"> 
     $(document).ready(function() { 
       showWarning('@ViewBag.Message'); 
     }); 

</script> 

आप इस तरह जावास्क्रिप्ट में ViewBag.PropertyName का उपयोग कर सकते हैं।

+0

मुझे यकीन नहीं है कि व्हाटिंग शो क्या करता है। (मेरे लिए कुछ भी नहीं किया) लेकिन बाकी में सही मूल्य था। तो मैंने अपने कोड में 'शोवार्निंग (' 2 ') देखा; – Doomsknight

+1

मैं इस कोड का उपयोग कर रहा था, यह सिर्फ चेतावनी देता है और यह ठीक काम करता है। आप अलर्ट ('@ ViewBag.Message') बदल सकते हैं; यह काम करेगा। – adt

7

कोशिश: var cc = @Html.Raw(Json.Encode(ViewBag.CC)

+0

धन्यवाद मैंने पहले ही कोशिश की है। – Doomsknight

+0

@ डूमस्कनाइट। और मुझे उम्मीद है कि आप इसका इस्तेमाल नहीं करेंगे। – gdoron

+1

ठीक है, उस स्थिति में, ViewBag.CC सर्वर पक्ष के मान की जांच करें, हो सकता है कि आप इसे किसी मामले में सेट न करें। – ZeNo

3

आप समाधान प्राप्त कर सकते हैं ऐसा करने से:

जावास्क्रिप्ट:

var myValue = document.getElementById("@(ViewBag.CC)").value; 

या यदि आप jQuery का उपयोग करना चाहते हैं, तो:

jQuery

var myValue = $('#' + '@(ViewBag.CC)').val(); 
+0

मुझे लगता है कि जावास्क्रिप्ट विकल्प दूसरों को +1 करने में मदद कर सकता है। इसके अलावा मुझे लगता है कि आप केवल '# @ (ViewBag.CC)' – Doomsknight

+0

लिख सकते हैं हाँ, आप सही @ डूमस्कनाइट हो सकते हैं, क्योंकि दुनिया में कई समाधान शामिल हैं :-) –