2010-09-22 54 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