2010-09-22 74 views
0

我正在尝试获取每个项目的设备位置。我有一个显示谷歌地图的页面和属于一个项目的所有设备的列表。我的行为是:ASP MVC变量为JavaScript?

public ActionResult GoogleMaps(int id) 
    { 
     return View(Project.Find(id).DeviceLocations); 
    } 

    public ActionResult Map(int id) 
    { 
     var map = Project.Find(id).DeviceLocations; 
     Locations l = new Locations(); 
     l.locations = map; 
     return Json(l, JsonRequestBehavior.AllowGet); 
    } 

jQuery的获得JSON:

jQuery().ready(function() { 
    $.getJSON("/Project/Map/68", loadMap); 

}); 

清单属于一个项目中的设备是这样的,但因为id为null json的明显失败。在你看到的jquery中,它应该是正在查看的项目的id。

我该如何做到这一点?

回答

0

如果你有一个像

routes.MapRoute(
       "default", 
       "{controller}/{action}/{id}", 
       new { action = "Index", id = "" } 
      );  
在Global.asax文件

然后从68你的链接/项目/地图的路线/ 68将自动默认路由处理程序分配给id参数。但是,如果你的问题是如何获得projectID查看有几个选项。最直接的方法是将其分配给ActionResult中的ViewData。

public ActionResult GoogleMaps(int id) 
{ 
    ViewData["ProjectID"] = Project.GetCurrentProjectID(id); 
    return View(Project.Find(id).DeviceLocations); 
} 
在您查看

你可以写

jQuery().ready(function() { 
    $.getJSON("/Project/Map/<%=ViewData["ProjectID"]%>", loadMap); 

}); 
+0

这样做时出现以下错误:非激活成员。任何想法为什么? – Prd 2010-09-22 15:18:52

+0

没关系,谢谢。 – Prd 2010-09-23 09:12:50

0

值传递ID查看和

$(function() { 
    $.getJSON("/Project/Map/<%:Model.Id%>", loadMap); 

}); 
+0

遗憾的是这样一个菜鸟,但是,我该怎么做呢?对于GoogleMaps视图,我使用了一个动作链接来传递变量,但我无法将其用于json。 – Prd 2010-09-22 13:08:20