【问题标题】:Web API method returning Partial view返回部分视图的 Web API 方法
【发布时间】:2012-08-04 19:07:16
【问题描述】:

我正在阅读一个在线项目的需求。这是关于 asp.net Web API 的。要求是一个 api 方法 /ui/echo/,它回显作为参数传递给它的任何字符串,当调用该参数时,将响应 UI HTML 部分 <b>Put echo string here</b>

我在互联网上了解到RazorMediaTypeFormatter。 web api还有其他方法可以返回部分视图吗?

【问题讨论】:

  • 强制您使用 ApiController 返回部分视图的设计约束是什么?为什么不使用用于返回部分视图的标准站点控制器。 ApiControllers 用于以 xml 或 json 格式返回数据的 RESTful API。
  • 从安全角度来看,这可能很危险,除非您使用 AntiXSS 之类的东西对参数进行编码。否则,恶意用户可以发送 Javascript、IFRAME、对象标签等,这些内容将被注入呈现给用户的 HTML。
  • 这是一个样本要求。工作应用程序肯定会从其他来源获取数据。问题是从 web api 返回一个部分。
  • 因此,更具体地说,您希望获取使用 Razor 编写的局部视图,并将呈现的 HTML 作为对 REST API 的请求的结果返回。那是对的吗?那么问题是如何从 Razor 视图中获取生成的 HTML,还是如何在 REST API 中返回 HTML,或两者兼而有之?
  • 是的,它是正确的。问题是如何使用 asp.net web api 从剃刀视图中获取结果。是 TypeFormatter 唯一的选项还是有什么可以做的?更具体地说,可以指定视图名称。我知道这很奇怪,对于这样的要求,我会去普通的 mvc 控制器,但正如我所说的,这不是我的要求,而是来自 odesk 上的在线工作

标签: asp.net-mvc-4 partial-views asp.net-web-api


【解决方案1】:

我会查看开源项目 MvcMailer,了解如何将 Razor 视图呈现为字符串,然后将其放入对 REST 请求的响应中。 MvcMailer 使用 Razor 视图将电子邮件正文呈现为 HTML。由于 ASP.NET Web API 是 MVC 4 的一部分,它应该很好地集成。我在 MVC 4 项目中使用了 MvcMailer,它工作正常。看看StringResult.ExecuteResult。这似乎是将 View 呈现为字符串的代码的核心。从未尝试在 REST 结果中返回 HTML 和 it is usually discouraged。根据this QA,您需要先对 HTML 进行编码,然后再将结果作为 JSON 发送回。 how to return HTML results here有一些很好的讨论。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-05-12
  • 2018-02-14
  • 2020-01-28
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
相关资源
最近更新 更多