2011-09-28 71 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总是试图纠正你的搜索,以便在试图找到关于它的信息时很烦人。