2011-09-28 61 views
0

我需要在Controller函數中調用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

請讓我知道,如果我想要做的是不好的做法!我很樂意採用更好的方式將我的地圖(JavaScript)與我的數據庫連接起來。 – YoYoMyo

回答

1

我需要在數據庫更改時更新映射。理想情況下,updateMap()應該是被自動執行的回調函數,當在位置表中的一行改變

您需要poll the server with Ajax,使用sockets(非常有限的支持),或comet索要新服務器數據。服務器不能隨意發送數據。

+0

我在JSON對象中有更新。 updateMap()讀取JSON。現在我想在控制器中調用updateMap()(我曾經是一名PHP程序員)。投票似乎很有趣。我現在要讀它。 – YoYoMyo

+0

我想在數據庫更新上調用updateMap的另一個原因是,我不想每次向服務器發送請求時重新繪製地圖。我確信有一種方法可以檢測到已更改的行。但我可能最終會重新繪製數據庫中的每一行,因爲我是一個懶惰的人。 – YoYoMyo

+0

您需要向服務器發出請求以檢測行已更改。這是什麼stackoverflow檢測是否有人在你坐在頁面上發佈答案。 – epascarello

0

我會建議您調查SignalR。它允許你想要的功能類型,但不幸的是它沒有很好的文檔,而且Google總是試圖糾正你的搜索,以便在試圖找到關於它的信息時很煩人。