我有我的api控制器中的数据列表。从apicontroller传递值在asp.net中查看mvc4
我想通过这些数据来查看使用类似于viewbag的东西。
我知道我们不能在apicontrller中使用viewbag,那么是否有其他选择。
我有我的api控制器中的数据列表。从apicontroller传递值在asp.net中查看mvc4
我想通过这些数据来查看使用类似于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获取您的handlebars模板,选择一个DOM来插入生成的HTML。一旦你的JSON,模板和容器使用下面的功能:
function RenderJson (json,template,container) {
var compiledTemplate = Handlebars.compile(template);
var html = compiledTemplate(json);
$(container).html(html); //set new content
}
我知道这似乎是一个更复杂的过程,但你试试吧,你会看到的优点,你将能够例如测试您的数据馈送和您的数据呈现分开。
希望它有帮助:)
它有什么像viewbag或tempdata,所以我可以存储它的价值,并在视图中使用它们。 – 2013-04-24 09:33:36
不,它并不是因为Web API中没有视图。你应该只返回一个模型。 – 2013-04-24 11:12:51