2009-03-23 5 views
1

Ich habe einen Prozess, der Aufrufe an einen Webservice ausführt und die Antworten verarbeitet. Einige der Antworten erfordern Benutzereingaben, damit sie bearbeitet werden können. Wenn eine Benutzereingabe erforderlich ist, möchte ich ein Ereignis auslösen, in der Ereignisbehandlungsroutine möchte ich ein Formular auf der Seite anzeigen, dann warten, bis die Benutzereingabe zurückgesendet wird, dann muss die Ereignisbehandlungsroutine die Benutzereingabe an die aufrufende Methode zurückgeben.Warten auf Benutzereingabe

Ich habe Schwierigkeiten mit dem Event-Handler warten auf den Post zurück, bevor die Eingabe zurück, ich weiß nicht einmal, ob es möglich ist.

Antwort

0

Wenn ich richtig verstehe, denke ich, das Problem hier ist, dass Sie versuchen, das Problem mit einem sehr einfachen ereignisbasierten System zu lösen. Was Sie tun müssen, ist ein eigenes (sehr einfaches) Workflow-System für eine solche Aufgabe zu erstellen und auch einige Back-End-Logik von der UI-Behandlung zu trennen (ASP.NET MVC Framework wäre dafür jedoch ideal) Ich sehe, dass Sie WebForms verwenden, was aber kein großes Problem ist). Nun muss dieser "Workflow" nicht notwendigerweise komplex sein. Beginnen Sie damit, die von Ihrer Anwendung ausgeführten Aktionen in eine Art Flussdiagramm zu zerlegen. Wenn Sie ziemlich direkte Abhängigkeiten sehen können, dann ist es vielleicht nur eine Frage des Implementierens eines grundlegenden Zustandsautomaten. Als allgemeiner Hinweis zum Umgang mit Zuständen in Web-Anwendungen (aller Art: Anwendung, Sitzung, Ansicht), lese einige der Links auf this page. Ich fürchte, ich kann Ihnen aus dem, was Sie beschrieben haben, nicht wirklich etwas Genaueres liefern (vielleicht verpasse ich jedoch etwas Offensichtliches). Wenn Sie die Aufgaben, die Ihre Website/Webanwendung ausführen soll, klarstellen möchten, kann ich Ihnen vielleicht einige Codebeispiele geben, aber ich vermute, dass die analytische Behandlung dieses Problems aus einer Flow-Perspektive Ihnen eine gute Lösung bietet .

0

Persönlich bevorzuge ich Noldorins Vorschlag, einen Arbeitsablauf herauszufinden und zu bestimmen, wann nach Eingabe gefragt wird. Denken Sie daran, dass Serverereignisse nichts mit dem clientseitigen Rendern zu tun haben, es sei denn, sie treten auf, wenn der Benutzer seine Anfrage stellt. In diesem Fall haben Sie bereits einen Workflow und brauchen keine Ereignisse.

Sie könnten dies umgehen, indem Sie den Clientcomputer mit dem Server kommunizieren lassen. Suchen Sie beispielsweise nach neuen Ereignissen im Tick-Ereignis eines <asp:Timer>-Steuerelements. Diese Lösung ist praktisch, wenn Sie zum Beispiel ein Update-Panel haben oder etwas, das sagt, dass der Server XX% erledigt hat und die Anfrage des Benutzers bearbeitet und nach der Verarbeitung nach Benutzereingaben fragt.