Frage

Auf meiner Seite einen Benutzer (interne Mitarbeiter) kann eine durch Kommata getrennte Liste von E-Mail-Adressen eingeben. Was ich möchte, ist ein Komma, jedes Mal tun eingegeben wird es überprüft, ob die neu geschriebene E-Mail-Adresse im Adressbuch ist.

Zur Zeit habe ich das Adressbuch als Hashtable gespeichert für O (1) Suchzeiten, aber ich kann einfach auf einen anderen Datenstruktur wechseln, wenn es empfohlen wird.

War es hilfreich?

Lösung

Sie können mit JavaScript und AJAX zu tun, mit der Server-Seite zu kommunizieren.

Sie können die nächsten Schritte tun:

  1. Erstellen Sie einen Webdienst, der die Zeichenfolge der Client erhält (die die E-Mail ist der Benutzer eingegeben hat), überprüft sie und gibt wahr / falsch.
  2. Fügen Sie [Scriptservice] Attribut der Web-Service-Klasse.
  3. Auf der Seite, fügen Sie eine ASP.NET Scriptsteuerung mit Scripts / Script, die von Schritt 1 an den Webdienst verweist.
  4. Auf der Seite, fügen Sie JavaScript-Code, mit dem onkeydown Ereignisse der E-Mails Textbox Haken
  5. In diesen Event-Handler, wenn der Benutzer ein Komma, eine Web-Service-Anfrage an den Server mit dem Textbox Wert auszuführen. Wenn die respond (wahr oder falsch) empfangen wird, tun, was Sie mit ihm brauchen.

Sie können mehr über MSDN lesen hier und < a href = "http://msdn.microsoft.com/en-us/library/bb398822.aspx" rel = "nofollow noreferrer"> hier . Sie könnten auch hilfreich die Auto-Vervollständigen AJAX-Extender .

Andere Tipps

Damit es auf Tastendruck durchgeführt werden dort wird Javascript (oder Client-Seite vbscript, wenn Sie IE verwenden) beteiligt sein. Dies kann nicht ohne es zu tun, wenn Sie suchen, es zu tun, basierend auf Tasteneingabe.

Wenn Sie es tun sollten, wenn der Benutzer dieses Textfeld verlässt, dann könnten Sie Autopostback und Code in C # auf der Server-Seite verwenden - Ich muss allerdings sagen, ich denke, dass Ansatz hässlich ist. Erfordern eine synchrone Postbacks Daten zu validieren ist eine große Zumutung für den Anwender meiner Meinung nach und deshalb nur wirklich sollte ein letzter Ausweg oder eine Notlösung sein, während Sie asynchrone Skript, wenn es darum, die Arbeit zu tun. Man könnte es auch in der Post Zeit tun (wenn sie versuchen, das Formular senden) und zu validieren und geben Sie eine Bestätigungsnachricht den Benutzern zurück, wenn eine der Adressen fehlschlagen, aber noch einmal, dies ist synchron und der Benutzer nicht erhalten den Vorteil der frühen Feedback.

I dies entweder mit einem Windows-Dienst tun würde (oder RESTful-Dienst verwenden) einen Javascript-Aufruf (mit dem XMLHttpRequest-Objekt). Binden Sie Ihre Textbox der keydown Ereignis zu einer JavaScript-Methode.

<input type="text" onKeyDown="javascript:CheckInput(this)" />

Dann wird Ihren Javascript Aufruf einrichten - das ist das Eingeweide von dem, was vor mir gehe:

( Hinweis: Dieser Code ist nicht Produktion bereit, es ist nur ein Beispiel, das Ihnen irgendeine Richtung geben soll)

var req;

function CheckInput()
{
    if (window.event) keycode = window.event.keyCode;
    if (keycode == 188) //KeyCode 188 = Comma;
    {

        //I haven't provided code for this, you will need to code
        //the extraction of the address you wish to test for yourself...
        var addressToCheck = ParseLastAddressFromTextBox(); 

        req = new XMLHttpRequest();
        //Replace <SERVICEADDRESS> with the URL of your web service
        //the 'true' parameter specifies that the call should be asynchronous
        req.open("POST", "<SERVICEADDRESS>", true);
        req.onreadystatechange = MatchSearchComplete; //This is the callback method
        //Set up the post headers
        req.setRequestHeader("Host", "localhost");
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        var params = addressToCheck;
        req.setRequestHeader("Content-Length", params.length);
        //Iitiate the call to the service
        req.send(params);        }
}

//The XMLHttpRequest object will fire this method when the
//onreadystatechange event fires...
function MatchSearchComplete()
{
    //Check that the response has the correct state and status
    //indicating that we've received a response from the server.
    if (req.readyState == 4 && req.status == 200)
    {
        //Our call to the service is complete
        var result = req.responseText;
        if (result == "false")
            alert('The address "'+ req.params +'" is not valid.);
    }
}

Also, was Sie hier tun, ist ein XMLHttpRequest-Einrichtung, die Daten hinein schieben und es wird zu einem Web-Service-Brennen.

Ihre ASP.NET Web-Anwendung wird einen Web-Service, um es gebaut benötigen, die die Validierung der Adresse tun werden.

Ich könnte auch warnen: Was ist, wenn es nur eine einzige Adresse und der Benutzer nicht traf das Komma? Sie sollten den Mut des CheckInput () -Methode, um seine eigene Methode bewegen, die die Adressen analysiert. Die KeyDown Methode sollte wirklich nur prüfen, ob die ‚‘ gedrückt wurde. Auf diese Weise können Sie die Web-Service-Aufruf zu überprüfen, wenn das Textfeld auch den Fokus verliert. Ich würde auch ohne dass der Benutzer über Änderungen bestehender Adressen Sorgen wieder das Komma zu treffen. Deshalb würde ich diesen Ansatz wundern. Ich würde, dass, sobald eine Adresse validiert Sie haben Javascript sollte, die diese Adresse können nur gelöscht werden, es sollte nicht bearbeitet werden ... was Ansatz, den Sie nehmen, ich bin einfach in der Warnung, dass es einige Problem ist nur mit Kontrolle sie mit dem eingegebenen '' Ansatz.

Sie haben dies mit Javascript zu tun. Nach dem Komma eingegeben wird, nur dann können Sie die E-Mail zurück zu C # Backend zur Überprüfung übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top