Javascript Ajax成功内部HtmlHelper中的结果变量不可访问

Javascript Ajax成功内部HtmlHelper中的结果变量不可访问,javascript,jquery,ajax,powerbi,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

我有一个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序列化对象,它有两个数据成员-ReportAccessToken。在Ajax的成功函数中,警报能够访问result.AccessToken并正确打印它。但是,当我尝试访问Html.PowerBIReportFor()函数中的result.AccessToken时,页面显示一个错误,表示“名称结果在当前上下文中不存在”

有人能帮我吗?

@Html.PowerBIReportFor(m=>m.Report,new{id=“pbi Report”,style=“height:68vh”,powerbi\u access\u token=Model.AccessToken})

PowerBIReportFor方法获取来自控制器的模型对象。模型对象应该包含报告(Microsoft.PowerBI.Api.V1.Models.Report)和AccessToken(字符串),以便该方法使用信息动态构建div元素。生成属性

如果从控制器加载视图,则此操作可以正常工作。但是在我的例子中,我只想将报告加载到当前视图中。如果我加载局部视图,整个布局将再次加载

我最终解决了这个问题,我自己在ajax成功事件中从结果对象的内容构建了div元素。

@Html.PowerBIReportFor(m=>m.Report,new{id=“pbi Report”,style=“height:68vh”,powerbi\u access\u token=Model.AccessToken})

PowerBIReportFor方法获取来自控制器的模型对象。模型对象应该包含报告(Microsoft.PowerBI.Api.V1.Models.Report)和AccessToken(字符串),以便该方法使用信息动态构建div元素。生成属性

如果从控制器加载视图,则此操作可以正常工作。但是在我的例子中,我只想将报告加载到当前视图中。如果我加载局部视图,整个布局将再次加载


我最终通过在ajax成功事件中从Result对象的内容构建div元素解决了这个问题。

您必须记住的是,对Html.PowerBIReportFor()的调用是在服务器上呈现的。它将不了解您页面上的JavaScript。我不熟悉PowerBIReportFor(),但是一个选项是将报告加载到javascript变量中,然后对访问令牌执行AJAX调用。如果成功,请将报告输出放入文档中,然后使用JQuery.attr()设置powerbi\u access\u令牌属性。感谢JohnMorgan。您必须记住的是,对Html.PowerBIReportFor()的调用是在服务器上呈现的。它将不了解您页面上的JavaScript。我不熟悉PowerBIReportFor(),但是一个选项是将报告加载到javascript变量中,然后对访问令牌执行AJAX调用。如果成功,请将报告输出放入文档中,然后使用JQuery.attr()设置powerbi\u access\u令牌属性。