2012-04-04 8 views
20

Meine versuchten Methoden.Wie kann ich auf ViewBag von JS zugreifen

an den JS via Browser sucht, die @ViewBag.CC ist einfach leer ... (fehlende)

 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(); 

Antwort

48

wenn Sie Rasierer Motor Vorlage werden dann gehen Sie wie folgt

Ihrer Ansicht schreiben:

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

UPDATE: Ein geeigneter Ansatz ist es, einen Satz von Konfiguration auf dem Master zu definieren, Layout zum Beispiel, Basis-URL, Facebook API-Schlüssel, Amazon S3 Basis-URL, etc ... `` `

Und Sie können es in Ihrem JavaScript-Code wie folgt verwenden:

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

Warum das '@' vor dem '

2

ViewBag ist Server-Seite Code.
Javascript ist clientseitig code.

Sie können nicht wirklich verbinden sie.

Sie können etwas tun:

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

Aber es wird auf dem Server erhalten analysiert, so dass man sie nicht wirklich an.

+0

Ich denke, Sie eine zusätzliche Klammer haben? Ich habe versucht, ähnlich, aber mit "". – Doomsknight

+0

@Doomsknight. "" Oder "" ist das gleiche. Gut, hat es funktioniert? – gdoron

+0

Zur Laufzeit sehe ich 'var c = $ ('#' + '2'). Val();' – Doomsknight

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

</script> 

Sie können ViewBag.PropertyName in Javascript wie folgt verwenden.

+0

Ich bin nicht sicher wht showWarning tut. (tat nichts für mich), aber der Rest enthielt den richtigen Wert. Also habe ich 'showWarning ('2');' in meinem Code gesehen. – Doomsknight

+1

Ich habe diesen Code verwendet, es ruft nur Alarm und es funktioniert gut. Sie können den Alarm ändern ('@ ViewBag.Message'); es wird klappen. – adt

7

Versuch: var cc = @Html.Raw(Json.Encode(ViewBag.CC)

+0

Danke das habe ich auch schon ausprobiert. – Doomsknight

+0

@Doomsknight. Und ich hoffe, du wirst es nicht benutzen. – gdoron

+1

Nun, überprüfen Sie in diesem Fall den Wert der ViewBag.CC-Server-Seite, Sie werden es in einigen Fällen möglicherweise nicht einstellen. – ZeNo

3

Sie die Lösung erreichen können, indem Sie diese:

JavaScript:

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

oder wenn Sie jQuery verwenden möchten, dann:

jQuery

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

Ich denke, die Javascript-Alternative könnte anderen +1 helfen. Auch ich denke, du kannst einfach schreiben "# (ViewBag.CC)" – Doomsknight

+0

Ja, du kannst Recht @Doomsknight, weil Welt bestehend aus mehreren Lösungen :-) –