Der Zweck von Handlern in Nicht-MVC-Projekten besteht darin, außerhalb von HTML irgendeine Art von codierter Antwort bereitzustellen. In der Regel würde ein Handler XML (rss, RESTful usw.), JSON für jQuery oder anderes Javascript oder manchmal nur reine Daten wie z. B. binäre Dateidownloads zurückgeben. Ich habe Handler verwendet, um sogar spezielles Javascript zurückzuschicken, das auf dem Client ausgeführt wird, als eine Möglichkeit, große Binärdateien oder Anforderungen nach einem "Nur-Anfrage" -Ansatz zu laden. Mehr oder weniger würde ein Handler verwendet werden, um "alles außer HTML" zurückzugeben.
In MVC würden Sie sich von Handlern entfernen und den Controller verwenden, um beliebige Daten zurückzugeben. So wird in dem Verfahren wie:
mywebsite.com/restapi/content/56223
Sie RestfulContentController würde ein Verfahren zum Index() hat, die keine Aussicht(), sondern reine XML oder JSON zurückkehren würden.
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
Kann ich nicht # 1 ohne einen Handler tun? Ich habe das jetzt, aber die aspx-Seite schreibt binär. 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: ASPX-Seiten verwenden mehr Ressourcen als ein ASHX-Handler. – Powerlord
Ja, ASPX kann Binär schreiben, aber das ist nicht, was es tun soll. Der Hauptzweck besteht darin, HTML-Inhalt zu rendern. Handler werden speziell für solche Aufgaben verwendet, da Sie keine leere ASPX-Datei definieren und in C#/VB im Code-Behind Code weg programmieren müssen. –