Saltar al contenido

¿Cómo llenar la variable javascript con JSON desde ViewBag?

Ya no tienes que buscar más por otras páginas ya que has llegado al sitio correcto, tenemos la solución que deseas y sin liarte.

Solución:

En View puedes hacer algo como esto

@
        var jss = new System.Web.Script.Serialization.JavaScriptSerializer();
        var userInfoJson = jss.Serialize(ViewBag.User);

en javascript puedes usarlo como


Estaba usando esta solución para objetos simples. Pero tuve algunos problemas para conseguir un array a js objects, así que dejaré lo que hice aquí.

C#

@
  using Newtonsoft.Json;
  ViewBag.AvailableToday = JsonConvert.SerializeObject(list);

js

var availableToday = JSON.parse('@Html.Raw(ViewBag.AvailableToday)');

Código del lado del cliente:

Esta es una llamada ajax a un controlador .Net MVC:

var clientStuff;

$.ajax(
    type: 'GET',
    url: '@Url.Action("GetStuff", "ControllerName")',
    data: ,
    dataType: "json",
    cache: false,
    async: false,
    success: function (data) 
        clientStuff = data;
    ,
    error: function(errorMsg) 
        alert(errorMsg);
    
);

Código del lado del servidor:

CONTROLADOR:

    public JsonResult GetStuff()
    
        return Json(_manager.GetStuff(), JsonRequestBehavior.AllowGet);
    

GERENTE:

    public IEnumerable GetStuff()
    
        return _unitofWork.GetStuff();
    

UNIDAD DE TRABAJO:

    public IEnumerable GetStuff()
    
        var ds = context.Database.SqlQuery("[dbo].[GetStuff]");
        return ds;
    

La unidad de trabajo puede ser una consulta a un sproc (como lo he hecho), un contexto de repositorio, linq, etc. Solo estoy llamando a un sproc aquí por simplicidad, aunque se podría argumentar que la simplicidad radica en Entity Framework y Linq. .

Si aceptas, puedes dejar un ensayo acerca de qué le añadirías a esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *