【问题标题】:result variable not accessbile in HtmlHelper inside Ajax success在 Ajax 成功中的 Html Helper 中无法访问结果变量
【发布时间】:2016-10-25 12:31:53
【问题描述】:

我有一个 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 的成功函数中,alert 能够访问 result.AccessToken 并正确打印它。但是,当我尝试访问 Html.PowerBIReportFor() 函数中的 result.AccessToken 时,页面显示错误消息“当前上下文中不存在名称结果”。

谁能帮我解决这个问题?

【问题讨论】:

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

标签: javascript jquery ajax powerbi


【解决方案1】:

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

PowerBIReportFor 方法采用来自控制器的模型对象。 Model 对象应包含 Report (Microsoft.PowerBI.Api.V1.Models.Report) 和 AccessToken (string),以便该方法使用 info 动态构建 div 元素.生成属性。

如果视图是从控制器加载的,这将正常工作。但是在我的情况下,我只想将报告加载到当前视图中。如果我加载部分视图,整个布局将再次加载。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多