문제

내 페이지에서 사용자(내부 직원)는 쉼표로 구분된 이메일 주소 목록을 입력할 수 있습니다.내가 하고 싶은 것은 쉼표를 입력할 때마다 새로 작성된 이메일 주소가 주소록에 있는지 확인하는 것입니다.

현재 주소록은 O(1) 검색 시간 동안 해시 테이블로 저장되어 있지만 권장되는 경우 다른 데이터 구조로 쉽게 전환할 수 있습니다.

도움이 되었습니까?

해결책

JavaScript와 Ajax로이를 통해 서버 측과 통신 할 수 있습니다.

다음 단계를 수행 할 수 있습니다.

  1. 클라이언트에서 문자열을 가져 오는 웹 서비스를 만듭니다 (사용자가 입력 한 이메일입니다). 확인을 확인하고 true/false를 반환합니다.
  2. 웹 서비스 클래스에 [ScriptService] 속성을 추가하십시오.
  3. 페이지에서 1 단계에서 웹 서비스를 가리키는 스크립트/스크립트 회의가있는 ASP.NET ScriptManager 컨트롤을 추가하십시오.
  4. 페이지에서 이메일 텍스트 상자의 onkeydown 이벤트에 연결하는 JavaScript 코드를 추가합니다.
  5. 이 이벤트 핸들러에서 사용자가 쉼표를 입력하면 텍스트 상자 값으로 서버에 웹 서비스 요청을 실행합니다. 응답 (참 또는 거짓)이 접수되면 필요한 모든 것을 수행하십시오.

MSDN에서 더 많은 것을 읽을 수 있습니다 여기 그리고 여기. 당신은 또한 도움이 될 수 있습니다 자동 완성 ajax 익스텐더.

다른 팁

Keypress에서 수행하려면 IE를 사용하는 경우 JavaScript (또는 Client Side VBScript)가있을 것입니다. 키 입력을 기반으로하고 싶다면이를 수행 할 수 없습니다.

사용자가 해당 텍스트 상자를 떠날 때 그렇게한다면 AutoPostback을 사용하여 서버 측에서 C#로 코딩 할 수 있습니다. 그래도 접근 방식이 추악하다고 생각합니다. 데이터를 검증하기 위해 동기식 포스트백을 요구하는 것은 내 의견으로는 사용자에게 큰 부과가되므로 작업을 수행하기 위해 비동기 스크립트를 얻는 동안 실제로 최후의 수단 또는 스톱 갭이어야합니다. 양식을 제출하려고 할 때 (양식을 제출하려고 할 때) 수행 할 수 있으며 주소가 실패하면 사용자에게 검증 메시지를 돌려 주면서도 다시 한 번 동기식이며 사용자는 사용자가 그렇지 않습니다. 조기 피드백의 이점을 얻으십시오.

XMLHTTPREQUEST 객체 사용)를 사용하여 Windows 서비스 (또는 RESTFul Service 사용)를 사용하여이를 수행합니다. TextBox의 키 다운 이벤트를 JavaScript 메소드에 바인딩하십시오.

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

그런 다음 JavaScript 호출을 설정하십시오 - 이것은 진행중인 일의 용기입니다.

(부인 성명: 이 코드입니다 ~ 아니다 생산 준비, 그것은 단지 당신에게 방향을 제시 해야하는 예일뿐입니다)

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.);
    }
}

따라서 여기서하고있는 일은 xmlhttprequest를 설정하여 데이터를 밀고 웹 서비스로 발사하는 것입니다.

ASP.NET 웹 애플리케이션에는 주소 검증을 수행 할 웹 서비스가 필요합니다.

나는 또한 경고 할 수도 있습니다 : 단일 주소 만 있고 사용자 그렇지 않습니다 쉼표를 쳤습니까? checkinput () 메소드의 내장을 주소를 구문 분석하는 자체 메소드로 이동해야합니다. 키 다운 방법은 실제로 ','가 밀려 있는지 확인해야합니다. 이렇게하면 웹 서비스에 전화하여 텍스트 상자가 초점을 잃는 시점을 확인할 수 있습니다. 또한 사용자가 다시 쉼표에 부딪히지 않고 기존 주소의 수정에 대해 걱정합니다. 그러므로 나는이 접근법에 대해 궁금합니다. 주소가 검증되면 주소를 삭제할 수있는 JavaScript가 있어야한다고 생각합니다. 편집 가능하지 않아야합니다 ... 어떤 접근 방식이든, 나는 단지 확인하는 데 문제가 있다고 경고합니다. 입력 된 '접근법을 사용합니다.

이 작업은 Javascript로 수행해야 합니다.쉼표를 입력한 후에만 확인을 위해 이메일을 C# 백엔드로 다시 전달할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top