Pregunta

¿Cuáles son los beneficios de utilizar un ashx o handler?Además, ¿los necesito si uso MVC (y por qué no)?

¿Importa el marco (2.0+)?

¿Por qué querría utilizar un controlador?Recientemente me recomendaron usar uno para recuperar una imagen, pero no sé por qué.

Gracias por tu tiempo.

Editar: ¿un controlador es más rápido?

¿Fue útil?

Solución

Sólo algunos ejemplos:

  1. Generación dinámica de imágenes:Puede escribir controladores que devuelvan imágenes basadas en datos creando un controlador ASHX que devuelva datos de imágenes y luego usando esa URL en sus etiquetas.p.ej. <img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  2. Devolver datos XML o JSON basados ​​en REST al código AJAX en el cliente.

  3. HTML personalizado:Devuelve HTML totalmente personalizado para una página cuando ASP.NET Web Forms o el marco MVC son demasiado restrictivos

Creo que esto ha estado disponible desde 1.0.

Otros consejos

El propósito de los controladores en proyectos que no son MVC es proporcionar algún tipo de respuesta codificada, fuera de HTML. Normalmente, un controlador devolvería XML (rss, RESTful, etc.), JSON para jQuery u otro Javascript, o, a veces, solo datos puros, como descargas de archivos binarios. He usado controladores para incluso devolver JavaScript especial para que se ejecute en el cliente, como una forma de cargar de forma lenta binaria grande o requisitos en un & Quot; demanda solo & Quot; enfoque. Más o menos, se usaría un controlador para devolver & Quot; cualquier cosa menos HTML & Quot ;.

En MVC, se alejaría de los controladores y utilizaría el Controlador para devolver los datos que desee. Entonces, en el método como:

mywebsite.com/restapi/content/56223

You RestfulContentController tendría un método para Index (), que NO devolvería una Vista (), sino un XML o JSON puro.

public class JSONContentController : Controller
{
  public JsonResult Index(int ContentID)
  {
    // get Content() by ContentID
    //

    // return a JSON version
    return Content().SerializeToJSON();
  }
}

Son muy útiles si trabaja en un entorno en el que no tiene acceso a IIS pero desea cambiar cosas como encabezados de respuesta de vencimiento en el futuro para optimizar el almacenamiento en caché de archivos como CSS, imágenes, JavaScript

Para las imágenes, puede hacer cosas como la optimización sobre la marcha para que pueda solicitar imágenes como image.jpg.ashx? w = 180 & amp; quality = 70 y luego usar el controlador para entregar la imagen según la configuración pasado en la cadena de consulta

aspx hereda la página que implementa IRequireSessionState. Entonces, si lo llama a través de Ajax, asp.net debe bloquear la sesión antes de continuar con el procesamiento.

Para el archivo ashx no tiene estado. A menos que lo herede de IRequireSessionState para administrar el estado.

Use ashx para todas las llamadas Ajax y use aspx para la página puramente asp.net.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top