Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
Pasar objeto de ASP.Net a javascript

Tengo una aplicación ASP.Net Core. Tengo una clase con algunos atributos:

 public class myClass { public string name {get; set;} public int id{get; set;} ... }

y en PageModel de Index.cshtml, estoy creando un objeto de esa clase y configurándolo como una propiedad:

 public class IndexModel : PageModel { public myObj data { get; set; } public void OnGet(int inputId) { data = new myClass(); data.name = "name"; data.id = inputId; } }

Ahora, en mi Index.cshtml, tengo un html predeterminado y luego agrego un script como este: <script type="module" src="~/built/script.js"></script>

Finalmente, mi pregunta: necesito los datos que he definido en IndexModel en mi script.js. En una página cshtml normal, haría @Model.data, pero ese decorador no está disponible en mi archivo js. ¿Hay alguna manera de hacer esto, o debería usar uno de los siguientes que creo que podría funcionar?

  • Agregar un controlador API en ASP.Net y llamarlo en mi script.js con ajax: creo que esto debería funcionar, pero me parece que se supone que debo hacerlo con @Model en su lugar
  • Almacenarlo de alguna manera en una variable global en mi archivo .cshtml y luego acceder a esa variable global en script.js: parece un truco

Soy bastante nuevo en ASP.Net y JS, por lo que podría haber una respuesta obvia a esto que soy demasiado inexperto para saber. ¡Cualquier ayuda es apreciada!

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Hay cuatro formas de hacer esto, encontraste dos de ellas. Te daré los pros y los contras en orden de complejidad:

AJAX:

No es tan difícil, use el método "buscar" integrado en el objeto de la ventana. Pero es asincrónico, por lo que debe lidiar con las devoluciones de llamada en JavaScript, deberá proteger la API para que solo acepte clientes autorizados (generalmente se hace con OAuth, pero podría inyectar un código de autorización para que lo use el JavaScript del cliente), y necesita identificarse (como una sesión) en la API para obtener los datos correctos, por lo que es otro código. Oh, espera, ¿tenemos que inyectar un código? Entonces, ¿cuál es el punto de usar AJAX? Cierto, ¡solo use AJAX cuando necesite obtener nuevos datos dinámicamente sin recargar la página!

Inyección de JavaScript:

Nunca desea inyectar en un archivo .js, deben ser estáticos y es por eso que descubrió que no funcionará. Por lo tanto, debe inyectar código JavaScript creando variables en la página que está cargando JavaScript. Eso es lo que propusiste y es completamente justo hacerlo. No es un truco. Debe ser una variable con una cadena JSON.

Galleta:

Coloque los datos en una cookie temporal entregada con la página y lea la cookie de JavaScript. Esta es más limpia que la solución variable, pero no es la forma más sencilla.

Inyección HTML:

Hay otra posibilidad de usar @Model, en lugar de inyectar la cadena JSON en una variable de JavaScript, lo que también requiere inyectar etiquetas de JavaScript, colocarlo en una propiedad en un elemento HTML y luego acceder a la propiedad desde JavaScript. Este es más simple y mi método preferido. Los nombres de propiedades que comienzan con "data-" están diseñados para esto.

about 4 years ago · Santiago Trujillo Denunciar

0

Puede usar el enlace de modelo según lo previsto y convertir el modelo en una variable de javascript en la parte superior de su vista, luego estará disponible en el archivo de secuencia de comandos como una variable de javascript siempre que cargue el archivo de javascript después de crear la variable para contener tu modelo

---TU OPINION---

 @model YourModel @using Newtonsoft.Json; <script type="text/javascript"> let mymodel = @Html.Raw(JsonConvert.SerializeObject(Model)); </script>

--Importe su archivo de secuencia de comandos después de crear la variable javascript y mymodel debería estar disponible

 <script type="text/javascript" src=""></script>

mymodel en su archivo de script

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda