【发布时间】:2017-07-31 00:05:05
【问题描述】:
question here 是关于我想要实现的目标。在控制器中,来自 repos 的所有数据都将放入 ViewModel 对象中。要求是:
if (requested content type = "json"){
return convert-to-json(ViewModel);
else
return view(ViewModel);
但是,question here(检查Request.Headers["Accept"].Contains("application/json"))中建议的解决方案看起来不太好。
Microsoft 的 content negotiation article 谈论标准内容协商(JSON/XML 等...)
我可以有一个单独的 WebAPI 项目,但在这种情况下,我不能证明编写另一组代码只是调用存储库并返回 JSON。
【问题讨论】:
-
解决方案“看起来不太好”是什么意思?我觉得很好。
-
您有框架内提供的解决方案,但不喜欢它的外观?然后编写一个辅助方法并“隐藏”“丑陋”的细节。
-
当您想要返回相同的数据作为响应的一部分时,内容协商工作。您希望根据条件返回两种不同的类型,因此内容协商无法处理。
-
@user2058413:只是一个问题 - 您使用 Formatters 链接了文章 - 您是说您不想想要使用的东西吗?
-
我不是 OP,但我想我理解这个问题的意图。开箱即用的内容协商不支持 text/html。链接问题上提供的答案让开发人员将代码添加到操作中,这并不理想,因为它必须在每个操作中重复,并且因为它不使用 ASP.NET 的内容协商功能。也就是说,这有点重复,所以我发布了对原始问题的新答案。
标签: asp.net-mvc asp.net-web-api asp.net-core