El propósito de los controladores en proyectos que no son MVC es proporcionar algún tipo de respuesta codificada, fuera de HTML. Típicamente, un manejador devolvería XML (rss, RESTful, etc), JSON para jQuery u otro Javascript, o algunas veces solo datos puros como descargas binarias de archivos. Utilicé manejadores para incluso devolver javascript especiales para ser ejecutados en el cliente, como una forma de carga lenta de grandes requisitos o binarios en un enfoque de "solo demanda". Más o menos, un controlador se usaría para devolver "cualquier cosa menos HTML".
En MVC, se alejaría de los manipuladores y utilizaría el controlador para devolver los datos que desee. Por lo tanto, en el método como:
mywebsite.com/restapi/content/56223
Usted RestfulContentController tendría un método para el índice(), que no regresaría a View(), pero en lugar de XML o JSON pura.
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
¿Puedo hacer # 1 sin un controlador? Lo tengo ahora, pero la página aspx tiene escritura binaria. http://stackoverflow.com/questions/612342/whats-the-best-way-to-display-an-image-from-a-sql-server-database-in-asp-net/612360#612360 – johnny
@ johnny: las páginas ASPX usan más recursos que un manejador ASHX. – Powerlord
Sí, aspx puede escribir de forma binaria pero eso no es lo que se supone que debe hacer. El objetivo principal es generar contenido HTML. Los manipuladores se usan específicamente para tales tareas porque no necesita definir un archivo aspx vacío y codificarlo en C#/VB en código subyacente. –