Hallo zusammen,
in meiner Silverlightanwendung möchte ich Reports aufrufen, welche über eine ASPX-Seite generiert werden. Dazu werden beim Aufruf der Seite POST-Parameter übertragen. Diese Seite soll in einem neuen Browsertab geöffnet werden.
Ich habe das in Silverlight nun versucht mit der "HiddenForm"-Methode zu realisieren. Dazu füge ich der ASPX-Seite, die die SL-Anwendung hostet, ein verstecktes FORM-Element hinzu und erstelle darin für jeden Parameter ein Inputfeld, um dieses FORM dann über submit abzusenden.
Leider bekomme ich dabei seit neustem eine Fehlermeldung, die mich nicht so richtig weiterbringt:
InvalidOperationException: Fehler bei Invoke: submit
Folgender Code wurde verwendet. Ich habe diesen bereits etwas modifiziert, da ich dachte vielleicht müsse das Element FORM schon auf der ASPX-Seite vorhanden sein. Leider war dem nicht so:
HtmlElement hiddenForm = HtmlPage.Document.GetElementById("reportForm");
//Form Eigenschaften setzen
hiddenForm.SetProperty("action", reportUrl.ToString()); //eingestellte Report URL
hiddenForm.SetProperty("method", "post"); //POST Methode verwenden
hiddenForm.SetProperty("target", "_blank"); //in neuem Tab öffnen
hiddenForm.SetStyleAttribute("visibility", "collapse"); //unsichtbar für Benutzer
int i = 1;
//Inputfelder für Reportparaketer erzeugen
foreach (ReportParameter param in _paramsList)
{
HtmlElement hiddenInput = HtmlPage.Document.CreateElement(string.Format("input{0}", i.ToString()));
hiddenInput.SetProperty("type", "hidden");
hiddenInput.SetProperty("name", param.Name);
hiddenInput.SetProperty("value", param.Value);
hiddenForm.AppendChild(hiddenInput);
i++;
}
hiddenForm.Invoke("submit");
Hat jemand eine Idee warum dies jetzt nicht mehr geht? Zudem ist die Idee mit der hiddenForm irgendwie... naja. Gibts hier nicht was cooleres?
Viele Grüße
€: Problem war ein Popupblocker, der verhindert hat das ein neues Fenster geöffnet wurde. Nachdem ich eine Ausnahmeregel hinzugefügt habe funktionierte es wie es soll.