2013-04-24 24 views

回答

2

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

+0

它有什么像viewbag或tempdata,所以我可以存储它的价值,并在视图中使用它们。 – 2013-04-24 09:33:36

+0

不,它并不是因为Web API中没有视图。你应该只返回一个模型。 – 2013-04-24 11:12:51

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获取您的handlebars模板,选择一个DOM来插入生成的HTML。一旦你的JSON,模板和容器使用下面的功能:

function RenderJson (json,template,container) { 
    var compiledTemplate = Handlebars.compile(template); 
    var html = compiledTemplate(json); 
    $(container).html(html); //set new content 
} 

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

希望它有帮助:)