2011-09-28 11 views
0

컨트롤러 함수에서 JavaScript 함수를 호출해야합니다. 내 코드는 다음과 같습니다.컨트롤러에서 javascript 함수 호출

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(DeviceLocation locationToEdit) 
    { 
     var originalLocation = (from m in _db.DeviceLocations 
           where m.Id == locationToEdit.Id 
           select m).First(); 

     if (!ModelState.IsValid) 
      return View(originalLocation); 

     _db.ApplyCurrentValues(originalLocation.EntityKey.EntitySetName, locationToEdit); 
     _db.SaveChanges(); 

     Utility.mostRecentLocationUpdate = locationToEdit; 

     /****************************************** 
     need to call updateMap() JavaScript function 
     *******************************************/ 

     return RedirectToAction("Locations"); 
    } 

고마워요!

+1

왜 서버 측에서 클라이언트 측 함수를 호출해야합니까? 무엇을 성취하려고합니까? –

+0

데이터베이스가 변경되면지도를 업데이트해야합니다. 이상적으로 updateMap()은 Location 테이블의 행이 변경 될 때 자동으로 실행되는 콜백 함수 여야합니다. – YoYoMyo

+0

내가하려고하는 일이 나쁜 습관이라면 알려주세요! 내지도 (자바 스크립트)를 데이터베이스에 연결하는 더 좋은 방법을 채택하고 싶습니다. – YoYoMyo

답변

1

데이터베이스가 변경 될 때지도를 업데이트해야합니다. 위치 테이블의 행이 새에 대한 서버를 물어

당신은 poll the server with Ajax 필요

, sockets (매우 제한된 지원)를 사용하거나 comet가 변경 될 때 이상적으로, updateMap()는 자동으로 실행됩니다 콜백 함수를해야한다 데이터. 서버는 의지대로 데이터를 전송할 수 없습니다.

+0

JSON 개체에 업데이트가 있습니다. updateMap()은 JSON을 읽습니다. 이제 컨트롤러에서 updateMap()을 호출하고 싶습니다. 저는 PHP 프로그래머였습니다. 폴링은 흥미로운 것 같습니다. 나는 그것을 지금 읽을 예정이다. – YoYoMyo

+0

데이터베이스 업데이트시 updateMap을 호출하려는 또 다른 이유는 서버에 요청을 보낼 때마다 맵을 다시 그리지 않으려한다는 것입니다. 변경된 행을 감지하는 방법이 있다고 확신합니다. 하지만 나는 게으른 사람이기 때문에 데이터베이스의 모든 행을 다시 그려야 할 것입니다. – YoYoMyo

+0

행이 변경된 것을 감지하려면 서버에 요청해야합니다. 그게 당신이 페이지에 앉아있는 동안 사람들이 답변을 게시하면 stackoverflow가 감지하는 것입니다. – epascarello

0

나는 SignalR을 조사하는 것이 좋습니다. 그것은 당신이 원하는 기능의 종류를 허용하지만, 불행히도 아주 좋은 문서를 가지고 있지 않으며, 구글은 항상 "신호"에 대한 정보를 찾으려고 할 때 성가신 검색을 정정하려고 노력하고 있습니다.

관련 문제