2016-10-25 135 views
1

我有一個MVC web項目。在該項目的CSHTML頁,我有如下的Ajax代碼: -結果變量在Ajax成功的HtmlHelper裏面沒有accessbile

$.ajax({ 
     type: 'POST', 
     dataType: 'json', 
     cache: false, 
     contentType: false, 
     processData: false, 
     url: '@Url.Action("Report", "Report")', 

     data: data, 
     success: function (result) { 
      if (result) { 
       alert(result.AccessToken); // ----> result.AccessToken is accessible here 
       $("#load-report").html(@Html.PowerBIReportFor(m => m.Report, new { id = "pbi-report", style = "height:68vh", powerbi_access_token = result.AccessToken }));   // ----> result.AccessToken is not accessible here   
      } 
      else { 
       alert("server Error: Not able to load report, please try again"); 
      } 
     }, 
     error: function() { 
      alert("Error in uploading the data"); 
     } 
    }); 

以Ajax調用的響應是有兩個數據承包商,客人一個JSON序列化對象 - 報告的accessToken。在Ajax的成功功能中,警報能夠訪問result.AccessToken並正確打印。但是,當我嘗試訪問Html.PowerBIReportFor()函數中的result.AccessToken時,該頁面顯示錯誤,指出「名稱結果在當前上下文中不存在」。

任何人都可以幫助我嗎?

+0

你必須記住的是,對Html.PowerBIReportFor()的調用在服務器**上呈現爲**。它不會了解您網頁上的JavaScript。我對PowerBIReportFor()並不熟悉,但一種選擇是將報告加載到JavaScript變量中,然後對訪問令牌執行AJAX調用。如果成功,將報告輸出放入文檔中,然後使用JQuery.attr() –

+0

設置powerbi_access_token屬性感謝JohnMorgan。 – Srikant

回答

0

@ Html.PowerBIReportFor(m => m.Report,new {id =「pbi-report」,style =「height:68vh」,powerbi_access_token = Model.AccessToken});

PowerBIReportFor方法將來自控制器的Model對象。模型對象應包含報告(Microsoft.PowerBI.Api.V1.Models.Report)和AccessToken(字符串),以便該方法使用信息動態構建div元素。生成屬性。

如果從控制器加載視圖,它將和平地工作。但在我的情況下,我只想將報告加載到當前視圖中。如果我加載部分視圖整個佈局再次加載。

我終於通過自己從ajax成功事件中Result對象的內容構建div元素來解決了這個問題。