Sto creando un servizio Web RESTful utilizzando l'API Web ASP.NET MVC 4. Per l'accesso API, sto restituendo JSON, anche se una volta che tutto funziona correttamente, la negoziazione del contenuto dovrebbe funzionare per XML e JSON per impostazione predefinita.ASP.NET MVC 4/Web API - inserire Razor renderer per Accetta: text/html
Poiché sto lavorando per un servizio Web veramente incentrato sulle risorse, il mio URI punta alle risorse effettive. Vorrei approfittare di questo restituendo una rappresentazione HTML della risorsa se Accepts: text/html
arriva nella richiesta (come lanciare il collegamento in un browser).
Mi piacerebbe essere in grado di approfittare di negoziazione dei contenuti MVC 4 Web API per inserire un renderer per il testo/HTML che utilizza i modelli rasoio. Ci sono esempi funzionanti di fare proprio questo?
Sì, questo è il collegamento di pagine MVC "regolari" e API Web. Fondamentalmente mi piacerebbe creare un renderer che usi un approccio basato su convenzioni per trovare e mostrare le visualizzazioni di Razor proprio come MVC "normale". Posso venire con la logica di ricerca della vista basata sulla convenzione. Sto semplicemente cercandoa) l'inserimento a livello globale il mio text/html
renderer nel negotation contenuti, e b) manualmente utilizzando il motore di Razor per rendere il mio modello in HTML.
Il reindirizzamento a un controller normale per Html può essere accettabile (o eseguire un'altra azione tramite HttpRequest e inviare i risultati al client)? –
@KyleTrauberman, preferirei accedere alla negoziazione del contenuto. Almeno dalla mia comprensione limitata, architettonicamente questo sarebbe il più saggio in futuro. Immagino che l'API Web e il normale MVC si uniranno in futuro e posizionerei le mie puntate sull'infrastruttura dell'API Web, quindi costruire la struttura di negoziazione del contenuto sembra la strada giusta da percorrere. Il reindirizzamento a un altro controller potrebbe funzionare, ma la mia esperienza mi porta a credere che sarebbe innaturale e potrebbe causare problemi in futuro. Ma non sono contrario a capire come funzionerebbe :) – MikeJansen