[英]pass value from apicontroller to view in asp.net mvc4
我的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進行渲染,有很多理由這樣做,主要是你有兩個完全分離的數據和表示,所以你可以重新使用你的數據Feed(例如在移動應用中)。
要在客戶端進行渲染,最好使用一些JavaScript渲染引擎,看看http://handlebarsjs.com/ 。
使用Jquery.getJSON()來獲取您的JSON並從您的DOM或通過Ajax獲取您的把手模板,選擇一個DOM alement來插入生成的HTML。 獲得JSON后,模板和容器使用以下函數:
function RenderJson (json,template,container) {
var compiledTemplate = Handlebars.compile(template);
var html = compiledTemplate(json);
$(container).html(html); //set new content
}
我知道這似乎是一個更復雜的過程,但是你嘗試它會看到優勢,你可以分別測試數據源和數據表示。
希望能幫助到你 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.