route registerroutes net mvc maproute examples asp c# javascript jquery asp.net-mvc

c# - registerroutes - Ejemplo de trabajo para JavaScriptResult en asp.net mvc



routes maproute constraints (3)

Evitar si es posible

JavaScriptResult se considera un antipatrón que introdujo Asp.net MVC (separación completa de inquietudes), porque une a Controller y View para que sean confiables entre sí. Por lo tanto, en una aplicación MVC de Asp.net pura en la que se construye la interfaz de usuario en MVC de Asp.net y en el lado del servidor, solo se recomienda esta implementación del cliente, por lo que se recomienda evitar esta funcionalidad.

Puede ser útil en otros escenarios. Recuerdo que he estado leyendo algo relacionado con los clientes de Ruby on Rails.

De todas formas.

Un ejemplo que tiene sentido.

Un ejemplo real sería devolver el código javascript a una solicitud de Ajax que simplemente proporcionaría alguna funcionalidad que se ejecutará inmediatamente después de la respuesta sin ninguna manipulación de datos.

¿Dónde podría beneficiarse de ello? Bueno, piense en una aplicación que tiene enormes cantidades de varias clases de clientes utilizadas en toda la aplicación. Pero ciertas páginas usan solo una pequeña fracción (o incluso una fración dinámica) de ellas. En este caso tendrías dos posibilidades:

  1. Cargue todo el árbol de clases del cliente por adelantado , ya sea en un solo archivo enorme o fragmentado en archivos separados (esto estaría bien si las vistas usaran un pequeño subconjunto de clases conocidas iniciales, porque de lo contrario, esto daría como resultado muchas solicitudes de servidor)
  2. Cargue las clases a pedido cuando sean necesarias , o tal vez incluso ejecute ciertas funciones de clase a pedido cuando las necesite.

En este caso particular, el segundo escenario sería mucho mejor y mucho más eficiente en términos de tráfico de red, recursos de memoria del cliente y carga del procesador.

¿Puede alguien proporcionar un ejemplo funcional de JavaScriptResult en asp.net mvc? Entiendo que devuelve javascript, que luego se ejecuta en el lado del cliente y también que el tipo de contenido de la respuesta se establece en texto / javascript. Necesito un ejemplo práctico para ver esto en acción.


Echa un vistazo a mi respuesta en este post;

MVC cómo devolver la instrucción para ejecutar el método javascipt?

Eso devolverá una vista parcial a la página. Si desea iterar a través de un objeto json, devuelva un objeto json desde su controlador y use algo como lo siguiente;

var obj = eval(''('' + msg + '')'');

msg anterior es el objeto devuelto desde su controlador;

entonces,

$.each(obj.Objects, function() { do something with object });

Los "objetos" anteriores son una propiedad dentro del objeto json devuelto.

Así que en c #

public class JsonObject() { List<MyObjectList> Objects{get;set;} }

Devuelve el objeto anterior a la vista.

¿Tiene sentido o le gustaría una muestra de trabajo?


Este es un caso práctico: tengo una clase estática global que contiene propiedades estáticas de valores que se utilizan en todo el sistema.

Algunos de esos valores deben compartirse con el código JS . Así que creé una acción que devuelve JavaScriptResult .

[OutputCache(Duration = 999999)] public virtual JavaScriptResult Global() { var script = $@" MaxNotificaitonsToShow = {GlobalSettings.MaxNotificaitonsToShow}; ItemsPerPage = {GlobalSettings.ItemsPerPage}; "; return JavaScript(script); }

Y en el pie de página, cargo la página:

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

Ahora puedo obtener los valores en cualquier archivo Javascript:

if(ItemsPerPage == 25) { alert(''it works!''); }