结果变量不是在Ajax成功的HtmlHelper中的accessbile

时间:2016-10-25 12:31:53

标签: javascript jquery ajax powerbi

我有一个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时,该页面显示错误,指出“当前上下文中不存在名称结果”。

任何人都可以帮我吗?

1 个答案:

答案 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元素来解决这个问题。