我的 api 控制器中有数据列表。
我想使用类似于 viewbag 的东西传递这些数据来查看。
我知道我们不能在 apicontrller 中使用 viewbag,所以有什么替代方法吗?
我的 api 控制器中有数据列表。
我想使用类似于 viewbag 的东西传递这些数据来查看。
我知道我们不能在 apicontrller 中使用 viewbag,所以有什么替代方法吗?
通常 ApiControllers 不返回视图。他们返回models
,或HttpResponseMessage
就此而言。因此,您可以简单地拥有一个包含所需属性的视图模型,然后让您的 API 操作返回此视图模型。
你不应该这样做,API 控制器只返回数据(XML、Json 等)。所以你应该有两个控制器:
System.Web.Http.ApiControlle使用它来返回数据集合,例如:
public List<Company> Get()
{
return this._companyService.GetCompanies();
}
返回 Json 或 XML 中的公司列表,而不是视图。
System.Web.Mvc.Controller使用这个来返回没有数据的 HTML,例如没有行或客户端模板的 HTML 表。
如何将两者联系起来?这个想法是使用 JavaScript 在客户端呈现,这样做有很多理由,主要是您在两个完全分离的提要中拥有数据和演示文稿,因此您将能够重用您的数据馈送(例如在移动应用程序中)。
在客户端渲染使用一些 JavaScript 渲染引擎是个好主意,看看http://handlebarsjs.com/。
使用 Jquery.getJSON() 获取您的 JSON 并从您的 DOM 或通过 Ajax 获取您的车把模板,选择一个 DOM 元素以插入生成的 HTML。获得 JSON、模板和容器后,请使用以下函数:
function RenderJson (json,template,container) {
var compiledTemplate = Handlebars.compile(template);
var html = compiledTemplate(json);
$(container).html(html); //set new content
}
我知道这似乎是一个更复杂的过程,但如果你尝试它,你会看到它的优势,例如,你将能够分别测试你的数据馈送和数据呈现。
希望能帮助到你 :)