簡體   English   中英

從apicontroller傳遞值到asp.net mvc4中查看

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM