Estoy creando un servicio web RESTful utilizando ASP.NET MVC 4 Web API. Para el acceso a la API, estoy devolviendo JSON, aunque una vez que todo funcione correctamente, la negociación de contenido debería funcionar para XML y JSON por defecto.ASP.NET MVC 4/API web - inserte el procesador Razor para Acepta: text/html
Como estoy trabajando para un servicio web realmente RESTful centrado en los recursos, mi URI indicará los recursos reales. Me gustaría aprovechar eso al devolver una representación HTML del recurso si Accepts: text/html
viene en la solicitud (como lanzar el enlace en un navegador).
Me gustaría poder aprovechar la negociación de contenido de MVC 4 Web API para insertar un representador de texto/html que use plantillas Razor. ¿Hay algún ejemplo de trabajo para hacer esto?
Sí, esto es un puente entre las páginas "normales" de MVC y la API web. Básicamente, me gustaría crear un renderizador que use un enfoque basado en convenciones para encontrar y renderizar vistas Razor como MVC "regular". Puedo pensar en la lógica de búsqueda basada en convenciones. Simplemente estoy buscandoa) inserción a nivel mundial mi procesador text/html
en el negotation contenido y b) utilizando el motor de la maquinilla de afeitar manual para hacer mi modelo a HTML.
¿Sería aceptable el redireccionamiento a un controlador normal para Html (o la ejecución de otra acción a través de HttpRequest y el envío de los resultados al cliente)? –
@KyleTrauberman, preferiría conectarme a la negociación de contenido. Al menos desde mi entendimiento limitado, desde el punto de vista arquitectónico, este sería el más sabio en el futuro. Supongo que la API web y el MVC regular se unirán en el futuro y colocaría mis apuestas en la infraestructura de la API web, por lo que construir sobre el marco de negociación de contenido parece ser el camino correcto. Redirigir a un controlador diferente podría funcionar, pero mi experiencia me lleva a creer que será antinatural y causará problemas en el futuro. Pero no me opongo a entender cómo funcionaría :) – MikeJansen