c# - snippet - title tag



Wie kann ich den HTML-Code aus einem ViewResult abfangen, ändern und bereitstellen? (2)

Ich schreibe ein einfaches CMS.

Ich möchte in der Lage sein, eine Ansicht zu laden, indem ich sie in eine Masterseite einbinde, und dann den HTML-Code scannen, damit ich einige benutzerdefinierte Tags (wie {{blog}} durch meine eigene Blogausgabe ersetzen kann). der Browser.

Wie kann ich vom ViewResult aus auf den HTML-Code zugreifen, um ihn abzufangen?


Answer #1

Das wird schwierig, weil das ViewResult seine Antwort direkt auf den Response.Stream schreibt. Sie müssen sich also wahrscheinlich mit der Eigenschaft Response.Filter beschäftigen, um das ViewResult an einen MemoryStream auszugeben, damit Sie den Inhalt manipulieren können, bevor Sie ein ContentResult zurückgeben. All dies würde wahrscheinlich in OnResultExecuting passieren.


Answer #2

Klingt so, als ob Sie ein ActionFilterAttribute schreiben möchten. Dieses Attribut hat die folgenden Methoden:

  • OnActionExecuting - wird kurz vor der dekorierten Aktion aufgerufen
  • OnActionExecuted - wird aufgerufen, nachdem die Aktionsmethode aufgerufen wurde, aber bevor das ActionResult gerendert wird.
  • OnResultExecuting - Aufruf bevor das Ergebnis gerendert wird
  • OnResultExecuted - wird aufgerufen, nachdem das Ergebnis gerendert wurde

Es gibt ein Beispiel, das entweder JSON- oder XML-Daten abhängig vom Header "Content-type" zurückgibt: REST-API mit ASP.NET MVC erstellen, das sowohl Json als auch einfaches Xml spricht





asp.net-mvc