ContentResult vs. string
Ich vor kurzem gefragt wurde, warum ContentResult
anstatt string
. Leider konnte ich keine bessere Antwort als: "Es ist die beste Praxis."
Hat jemand eine bessere Antwort?
Besser zu verstehen, die Frage. Was ist der Unterschied?
public ActionResult Foo(){
return Content("Some string");
}
public string Bar(){
return "Some string";
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wieder etwas anderes als ein
ActionResult
die Standard-Verhalten ist das erstellen einerContentResult
Verpackung das Ergebnis des AufrufsToString()
auf, was du hast, zurückgeben (oderEmptyResult
wenn Sie zurücknull
. Gründe die ich mir denken kann explizit zurückContentResult
:ToString()
nennen. Das ist egal, wenn Sie zurückkehrenstring
, aber die Rückkehr eine komplizierte Typ, könnte zu unerwarteten Ergebnissen führen.Du kannst nicht einen string an eine Methode, die zurückgibt, eine ActionResult, so ist das, wenn Sie könnte ein ContentResult zurück ein einfacher string wie folgt:
ContentResult standardmäßig gibt eine Art von
text/plain
. Wenn Sie nur jemals benötigt, um einen string zurückgeben, dann würden Sie die Methode verwenden, um einen string zurückzugeben, derContentResult
isttext/html
. (Quelle: ich habe es gerade ausprobiert.)text/plain
statttext/html
dann verwenden Sie die überlastung derContent
- Methode mit einem zweiten parameter als den content-type-Angabe.MediaTypeNames.Text.Plain
oderMediaTypeNames.Text.Xml
. Obwohl es enthält nur einige der am häufigsten verwendeten MIME-Typen. ( docs.microsoft.com/en-us/dotnet/api/... )Zwei wesentliche Vorteile:
ContentEncoding
EigenschaftContentType
EigenschaftAuch, wenn Sie wollen, um OO-clean über it,
ContentResult
zusammen mit allenActionResult
abgeleiteten Klassen Folgen Sie den Befehl Muster durch die Bereitstellung einesExecuteResult
Befehl für die MVC pipeline zu laufen.Rückkehr eine ContentResult hilft, schützen Sie Ihre Anwendung.
E. g, Wenn Ihre Anwendung ermöglicht die Eingabe von Benutzer, könnte ein böswilliger Benutzer versuchen, zu analysieren, eine javascript-text. Dadurch wird die Ausführung von javascript verhindern in Ihrer Anwendung
Einen Unterschied, wie ich weiß, ist :
Inhalt Ergebnis zurückgeben, ohne Anführungszeichen, wenn Sie wollen.
String return Ergebnis in Anführungszeichen die ganze Zeit.
Ein weiterer Unterschied ist der Inhalt Ergebnis zurückgeben kann unterschiedliche Inhalte aus. Wie string, Html -, JavaScript-Ergebnis etc.
Aber die string return string Ergebnis.