【发布时间】:2012-08-02 17:54:29
【问题描述】:
我正在使用 ASP.NET MVC 4 Web API 创建一个 RESTful Web 服务。对于 API 访问,我将返回 JSON,但一旦我让一切正常工作,默认情况下内容协商应该适用于 XML 和 JSON。
由于我正在努力实现真正以 RESTful 资源为中心的 Web 服务,因此我的 URI 将指向实际资源。如果Accepts: text/html 出现在请求中(例如将链接扔到浏览器中),我想通过返回资源的 HTML 表示来利用这一点。
我希望能够利用 MVC 4 Web API 的内容协商为使用 Razor 模板的 text/html 插入渲染器。有没有这样做的工作示例?
是的,这是桥接“常规”MVC 页面和 Web API。基本上,我想创建一个渲染器,它使用基于约定的方法来查找和渲染 Razor 视图,就像“常规”MVC 一样。我可以提出基于约定的视图查找逻辑。 我只是在寻找 a) 将我的text/html 渲染器全局插入到内容协商中,并且b) 手动使用 Razor 引擎将我的模型渲染为 HTML。
【问题讨论】:
-
是否可以接受重定向到 Html 的普通控制器(或通过 HttpRequest 执行另一个操作并将结果发送回客户端)?
-
@KyleTrauberman,我更愿意参与内容协商。至少从我有限的理解来看,在架构上这将是最明智的。我猜 Web API 和常规 MVC 将在未来结合在一起,我将赌注押在 Web API 基础设施上,因此构建内容协商框架似乎是正确的方法。重定向到不同的控制器可能会起作用,但我的经验让我相信这将是不自然的,并在未来造成麻烦。但我不反对理解它是如何工作的:)
标签: razor asp.net-mvc-4 asp.net-web-api content-negotiation