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.