我有一个MVC网络项目。在项目的cshtml页面中,我有一个Ajax代码如下: -
$.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 :(得分:0)
@ Html.PowerBIReportFor(m => m.Report,new {id =“pbi-report”,style =“height:68vh”,powerbi_access_token = Model.AccessToken});
PowerBIReportFor 方法使用来自控制器的Model对象。 Model对象应包含 Report (Microsoft.PowerBI.Api.V1.Models.Report)和 AccessToken (字符串),以便该方法使用info动态构建div元素。生成属性。
如果从控制器加载视图,则可以和平工作。但是在我的情况下,我只想将报告加载到当前视图中。如果我加载局部视图,则整个布局再次加载。
我终于通过在ajax成功事件中从Result对象的内容构建div元素来解决这个问题。