Ich baue eine App mit Power-BI eingebettet in Visual Studio. Ich habe dem Bericht Aktion im Controller einen Benutzernamen und Rollen hinzugefügt, die einem Benutzernamen und einer Rolle im tatsächlichen Bericht entsprechen, den ich einbetten möchte. Ich möchte den Benutzernamen als Variable aus einem Textfeld in der Datei index.cshtml an die Aktion Bericht übergeben. Der Bericht lädt und bettet, wenn dieser Wert fest codiert ist, aber ich kann ihn nicht als Variable übergeben! HierWie kann ich Variablen mit MVC Power BI Embedded übergeben?
ist die Action im Controller -
public async Task<ActionResult> Report(string reportId)
{
//This is where I'm trying to get the variable from the textbox
username = Request["centreID"].ToString();
using (var client = this.CreatePowerBIClient())
{
var reportsResponse = await client.Reports.GetReportsAsync(this.workspaceCollection, this.workspaceId);
var report = reportsResponse.Value.FirstOrDefault(r => r.Id == reportId);
IEnumerable<string> roles = new List<string>() { "xxxxxxxx" };
// I can hardcode the username here, and it works, but can't pass in a variable from the html like above
//string username = "xxxxxx";
//username = this.username;
var embedToken = PowerBIToken.CreateReportEmbedToken(this.workspaceCollection, this.workspaceId, report.Id, username, roles);
var viewModel = new ReportViewModel
{
Report = report,
AccessToken = embedToken.Generate(this.accessKey)
};
return View(viewModel);
}
}
In dem Modell ist, wo ich habe meine get setzen und setzt
public string username { get; set; }
Hier ist der HTML ich verwendet habe; Ich habe vorher mit einer void-Methode in der Steuerung getestet und es funktioniert die Variable in die
Controller passieren@using (Html.BeginForm("Report", "Dashboard"))
{
@Html.Label("Enter Centre ID")
@Html.TextBox("centreID")
<input type="submit" value="submit" />
}
</span>
</a>
Wenn Sie setzen ein Haltepunkt in dieser Zeile 'username = Request [" centreID "]. ToString();' ... erhält er den Wert oder nicht? – Hackerman
Nein, es ist nicht ... Bevor ich die Aktion html.beginform auf eine void -Methode im Controller verweisen ließ, habe ich Haltepunkte eingefügt und den Wert übergeben. Liegt das daran, dass dies asynchron ist? –
Und der 'reportId' Wert? – Hackerman