ASP.NET MVC 4 / Web API - Fügen Sie den Razor Renderer für Accepts: text / html ein

8

Ich erstelle einen RESTful Web Service mit der ASP.NET MVC 4 Web API. Für den API-Zugriff gebe ich JSON zurück, obwohl, sobald alles korrekt funktioniert, die Inhaltsverhandlung für XML und JSON standardmäßig funktionieren sollte.

Da ich an einem wahrhaft REST-fähigen ressourcenorientierten Webdienst arbeite, werden meine URIs auf tatsächliche Ressourcen verweisen. Ich möchte das ausnutzen, indem ich eine HTML-Repräsentation der Ressource zurückgebe, wenn Accepts: text/html in der Anfrage kommt (wie das Werfen des Links in einen Browser).

Ich möchte in der Lage sein, die Inhaltsverhandlung der MVC 4 Web API zu nutzen, um einen Renderer für text / html einzufügen, der Razor-Vorlagen verwendet. Gibt es Arbeitsbeispiele, um genau dies zu tun?

Ja, dies ist die Überbrückung von "normalen" MVC-Seiten und der Web-API. Grundsätzlich möchte ich einen Renderer erstellen, der einen konventionsbasierten Ansatz zum Suchen und Rendern von Razor-Ansichten wie "normale" MVC verwendet. Ich kann die konventionsbasierte Lookup-Logik erstellen. Ich suche einfach a) , indem ich meinen text/html -Renderer global in die Inhaltsverhandlung einfüge und b) Verwenden Sie die Razor-Engine manuell, um mein Modell in HTML zu rendern.

    
MikeJansen 02.08.2012, 17:54
quelle

2 Antworten

3

Fredrik Normén hat einen Blogbeitrag zu diesem Thema:

Ссылка

Grundsätzlich müssen Sie ein MediaTypeFormatter

erstellen %Vor%

und registrieren Sie es dann in Global.asax:

%Vor%

Der obige Code wird aus dem Blogpost kopiert und ist nicht meine Arbeit

    
Kyle Trauberman 02.08.2012, 18:46
quelle
0

Sie können sich WebApiContrib.Formatting.Razor ansehen. Es ist Kyles Antwort sehr ähnlich, aber es ist ein voll entwickeltes Open-Source-Projekt mit mehr Funktionen, Komponententests usw. Sie können Mach es auch auf NuGet ."

Ich werde sagen, dass es definitiv mehr Funktionen braucht, aber sie scheinen es gut entworfen zu haben, so dass es sehr einfach wäre, dazu beizutragen.

    
Phil 30.01.2014 23:21
quelle