So arbeite ich mit diesem Formular, das am Ende ein Word-Dokument für den Benutzer zum Download generiert, löst einige E-Mails aus und zeigt dann ein erfolgreiches Panel für den Benutzer. Das Problem, das ich habe, ist, dass die Visible Flags nicht geändert werden, wenn ich die downloadWordFile() -Methode aufrufen. Gibt es etwas in dieser Methode, die meine Fähigkeit beeinträchtigen würde, die Sichtbarkeit von ASP-Panels zu ändern? Ich habe versucht, fast jeden Teil davon zu entfernen, um zu sehen, wo das Problem auftaucht und ich war nicht in der Lage, Kopf oder Zahl davon zu machen. Alles andere funktioniert gut, es ist nur diese Methode, die das Problem verursacht. Vielen Dank im Voraus für Ihre Hilfe!Das Erstellen eines Word-Dokuments in C# hindert mich daran, Panels in ASP sichtbar zu machen, was läuft falsch?
protected void btnSubmit_Click(object sender, EventArgs e)
{
pnlForm.Visible = false;
pnlSuccess.Visible = true;
email();
adminEmail();
downloadWordFile();
}
protected void downloadWordFile(){
Response.ContentType = "application/msword";
Response.ContentEncoding = System.Text.UnicodeEncoding.UTF8;
Response.Charset = "UTF-8";
Response.Write("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>");
Response.Write("<head>");
Response.Write("<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"\"text/html; charset=UTF-8\"\">");
Response.Write("<meta name=ProgId content=Word.Document>");
Response.Write("</head>");
Response.Write("<body>");
Response.Write("<div class=Section2>");
Response.Write(buildForm());
Response.Write("</body>");
Response.Write("</html>");
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "Generic.doc");
HttpContext.Current.Response.Flush();
}
EDIT 1: Ich ging einen anderen Weg vollständig. Anstatt zu versuchen, die Panels zu wechseln, E-Mails zu generieren und Word-Dateien auf einmal zu generieren, habe ich die Übermittlungsschaltfläche zwischen den Panels wechseln lassen, und das Erfolgsfenster zeigt nun eine Vorschau des Word-Dokuments, das heruntergeladen werden soll, und bietet dem Benutzer die Möglichkeit Änderungen vornehmen Es gibt eine Download-Schaltfläche im Erfolgsfenster, die die E-Mails generiert und das Word-Dokument herunterlädt. Dies erforderte minimale Änderungen an der Art, wie der Code bereits eingerichtet war, und löste ein weiteres Problem, das bei der E-Mail-Generierung auftrat.
Ich denke, ich kann das als Sprungpunkt verwenden, danke! Eines der Probleme mit dieser Methode ist, dass das Word-Dokument, das heruntergeladen wird, aus dem Inhalt des Formulars generiert wird. Ich muss also alle Informationen aus dem Formular auf die neue Seite übertragen, sonst bekomme ich eine Menge "txtTitle" existiert in diesem Zusammenhang nicht "Tippfehler. –
Als Antwort auf Ihre Bearbeitung: Da es sich um mehr als 60 Felder handelt, anstatt Abfragezeichenfolgen zu verwenden, gibt es einen Grund, warum ich kein Array zum Speichern der 60 Felder verwenden und dann aus dem Array lesen könnte, anstatt a zu verwenden queryString, was bei dieser Größe ziemlich unhandlich würde? –
Das ist eine große Form. Ich könnte erwägen, den lokalen Speicher des Browsers zu verwenden, um die Formulardaten beizubehalten. Lokaler Speicher ist eine HTML5-Spezifikation, sodass die Browserkompatibilität möglicherweise ein Problem darstellt. –