Ich habe ein MVC-Web-Projekt. In einer cshtml Seite des Projektes habe ich einen Ajax-Code wie folgt: -Ergebnis Variable nicht accessbile in HtmlHelper innerhalb Ajax Erfolg
$.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");
}
});
Die Antwort auf Ajax-Aufruf ist ein JSON serialisiert Objekt, das zwei Daten memebers hat - Bericht und AccessToken. In der Erfolgsfunktion von Ajax kann die Warnung auf das result.AccessToken zugreifen und es korrekt ausdrucken. Wenn ich jedoch versuche, auf result.AccessToken innerhalb der Html.PowerBIReportFor() - Funktion zuzugreifen, wird auf der Seite der folgende Fehler angezeigt: "Das Namensergebnis existiert nicht im aktuellen Kontext".
Kann mir jemand dabei helfen?
Was Sie beachten müssen, ist, dass der Aufruf von Html.PowerBIReportFor() ** auf dem Server ** gerendert wird. Es wird keine JavaScript-Kenntnisse auf Ihrer Seite haben. Ich bin nicht vertraut mit der PowerBIReportFor(), aber eine Option wäre, den Bericht in eine Javascript-Variable zu laden, dann führen Sie Ihren AJAX-Aufruf für das Zugriffstoken. Wenn es erfolgreich ist, legen Sie die Berichtsausgabe in Ihr Dokument und setzen Sie das Attribut powerbi_access_token mit JQuery.attr() –
Dank JohnMorgan. – Srikant