2012-04-04 23 views
20

Mis intentos de métodos.¿Cómo accedo a ViewBag desde JS

En cuanto a las JS a través del navegador, la @ViewBag.CC es sólo en blanco ... (falta)

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

Respuesta

48

si está utilizando la plantilla motor de la maquinilla de afeitar y luego haga lo siguiente

en su opinión escritura:

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

ACTUALIZACIÓN: Un enfoque más apropiado es definir un conjunto de configuración en el maestro diseño, por ejemplo, url base, clave API de Facebook, URL base de Amazon S3, etc. `` `

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

Y usted puede utilizarlo en su código JavaScript de la siguiente manera:

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

¿Por qué '' 'antes de'

2

ViewBag es lado del servidor código.
Javascript es lado del cliente código.

No se puede realmente conéctelos.

se puede hacer algo como esto:

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

pero conseguirá analizada en el servidor, por lo que en realidad no conectarlos.

+0

Creo que tienes un soporte adicional? He intentado algo similar pero con '". – Doomsknight

+0

@Doomsknight. '' 'O' "' es lo mismo. Bueno, ¿funcionó? – gdoron

+0

En tiempo de ejecución veo 'var c = $ ('#' + '2'). Val();' – Doomsknight

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

</script> 

Puede usar ViewBag.PropertyName en javascript de esta manera.

+0

No estoy seguro de que showWarning lo haga. (no hizo nada por mí) pero el resto sí contenía el valor correcto. Entonces vi 'showWarning ('2');' en mi código. – Doomsknight

+1

Estaba usando este código, llama solo alerta y funciona bien. puede cambiar la alerta ('@ ViewBag.Message'); funcionará. – adt

7

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

+0

Gracias, también lo he intentado ya. – Doomsknight

+0

@Doomsknight. Y espero que no lo uses. – gdoron

+1

Bueno, en ese caso, verifique el valor del lado del servidor ViewBag.CC, es posible que no lo configure en algún caso. – ZeNo

3

Puede llegar a la solución, al hacer esto:

JavaScript:

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

o si desea utilizar jQuery, entonces:

jQuery

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

Supongo que la alternativa de javascript podría ayudar a otros +1. También creo que puedes escribir ''# @ (ViewBag.CC)' ' – Doomsknight

+0

Sí, puedes tener razón @Doomsknight, porque el mundo consiste en múltiples soluciones :-) –

Cuestiones relacionadas