2011-05-31 278 views

Respuesta

38

No se puede almacenar un valor en ViewBag desde javascript. ViewBag es un concepto del lado del servidor y existe solo en el servidor. Javascript se ejecuta en el cliente. Por lo que el almacenamiento de algunos datos de ViewBag en una variable de JavaScript está preocupado de que podría utilizar el siguiente:

<script type="text/javascript"> 
    var foo = @Html.Raw(Json.Encode(ViewBag.FooBar)) 
</script> 

Ahora esto se dice la gente que siempre asesoramiento contra el uso de ViewBag/ViewData en ASP.NET MVC. Recomiendo usar vistas fuertemente tipadas y ver modelos. Entonces su código se verá así:

@model MyViewModel 
<script type="text/javascript"> 
    var foo = @Html.Raw(Json.Encode(Model)) 
</script> 
+1

@Agzam, ¿A dónde desea acceder a este objeto? En javascript? Eso es malo. Eso significaría que sus puntos de vista estarían extrayendo información de algunas partes. Las vistas no deben extraer información. Se supone que usan información que se les está pasando como modelo de vista desde la acción del controlador. Así que siéntase libre de definir un modelo de vista, una acción de controlador que obtendrá la información de donde sea que esté almacenada (Alcance de la aplicación en su caso) y pase este modelo de vista a la vista. Entonces, dentro de esta vista, todo lo que tienes que hacer es usar el modelo de vista => eso es todo lo que debería hacer –

+0

Ahora, si quieres pasar alguna información almacenada en una variable de JavaScript a tu servidor, tienes dos posibilidades: AJAX, formularios HTML, window.location.href, anchors, ... –

+0

@DarinDimitrov - Estoy aprendiendo a cambiar de Web Forms a MVC y probablemente usé aproximadamente 20 de tus respuestas últimamente, esto definitivamente me ahorró mucho tiempo –

3

No puede. ViewBag es algo del lado del servidor, Javascript se ejecuta en el lado del cliente.

Cuestiones relacionadas