Laden...

[gelöst] [SL] neuen Tab öffnen -> Seite aufrufen -> POST Parameter übergeben

Erstellt von 1nf1n1ty vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.308 Views
1nf1n1ty Themenstarter:in
286 Beiträge seit 2007
vor 12 Jahren
[gelöst] [SL] neuen Tab öffnen -> Seite aufrufen -> POST Parameter übergeben

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.