0

我的 api 控制器中有数据列表。

我想使用类似于 viewbag 的东西传递这些数据来查看。

我知道我们不能在 apicontrller 中使用 viewbag,所以有什么替代方法吗?

4

2 回答 2

2

通常 ApiControllers 不返回视图。他们返回models,或HttpResponseMessage就此而言。因此,您可以简单地拥有一个包含所需属性的视图模型,然后让您的 API 操作返回此视图模型。

于 2013-04-24T09:32:06.777 回答
0

你不应该这样做,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
}

我知道这似乎是一个更复杂的过程,但如果你尝试它,你会看到它的优势,例如,你将能够分别测试你的数据馈送和数据呈现。

希望能帮助到你 :)

于 2013-04-24T09:44:27.373 回答