2012-05-18 3 views
0

페이지를 다시로드하지 않고 페이지의 라벨을 새로 고침하고 싶습니다.페이지를 다시로드하지 않고 라벨을 새로 고치는 방법

이 페이지는 SMS를 보내는 데 사용됩니다. COM 포트에 연결된 GSM 모뎀을 사용하기 때문에 텍스트 당 약 3 초 정도 걸리는 상당히 느린 프로세스입니다. (온라인 서비스 나 USB 연결이 아닌 직렬 GSM 모뎀을 사용하는 데에는 오랜 이유가 있습니다.)

";"으로 구분 된 여러 개의 숫자를 지정할 수 있습니다. 나는 각 원본이 보내질하자마자 페이지를 새롭게하고 싶다; 그러나 현재는 라벨을 한 번에 모두 끝까지 업데이트합니다. 이것을 달성하는 가장 간단한 방법은 무엇입니까? 생각은 아마 AJAX, JavaScript 또는 Threading이었습니다. (내가 말할 때, 단순 좋다!)

현재 코드 :

SerialPort sp = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One); 
     try 
     { 
      String[] numbers = tbNo.Text.Split(';'); 


      foreach (string n in numbers) 
      { 

       sp.Open(); 

       sp.Write("AT+CMGF=1" + (char)(13)); 

       Thread.Sleep(200); 

       sp.Write("AT+CMGS=" + n.Replace(" ", string.Empty) + (char)(13)); 

       Thread.Sleep(200); 

       sp.Write(tbMsg.Text + (char)(13) + (char)(26)); 

       Thread.Sleep(3000); 

       sp.Close(); 

       Label1.Text = Label1.Text + "Message sent to " + n + "<br />"; 

      } 

     } catch (Exception error) { 

      Label1.Text = error.Message; 
     }; 
+0

아약스 *는 * 자바 스크립트입니다. (그것은 j가 의미하는 것입니다) –

답변

0

가장 좋은 방법은 당신이 ASP.net이있는 경우, 그것이 될 수있는 서버 측에 서비스를 생성하는 것입니다 WCF 나머지 서비스, ​​아약스 호출로 서버에 게시물 요청을 보내고 결과를 받으면 label text 자바 스크립트에 변경하십시오.

0

확실히 AJAX를 사용하고 싶습니다. 실제로 구현하기 쉬운 한 가지 방법은 SignalR을 사용하는 것입니다.

SignalR은 클라이언트와 서버 간의 실시간 연결을 지원하는 프레임 워크입니다. 이렇게하면 코드를 훨씬 쉽게 만들 수 있습니다. SignalR을 사용하지 않는다면, 폴링 (클라이언트 브라우저가 서버에 매 X 초마다 작업의 상태를 묻는)이나 이것에 대한 변형과 ​​같은 것을 수동으로 구현해야합니다.

SignalR은 사용되는 기본 메커니즘을 숨기고 서버와 클라이언트 사이에 연결을 생성합니다.

public class SmsHub : Hub 
{ 
    public Task SendMessages(string input) 
    { 
     // ... send sms message 

    Caller.updateStatus('Message send!'); 
    } 
} 

을 그리고 당신의 클라이언트는 메시지를 보내고받을 수있는 자바 스크립트 허브를 사용합니다 : 서버에

코드는 다음과 같을 것이다. updateStatus 함수는 일부 정보 div에 HTML 메시지를 추가 할 수 있습니다.

Scott Hanselman의 blog post은 시작하는 데 도움이 될 수 있습니다.

관련 문제