我剛剛進入asp.net mvc和jquery,所以這可能是一個「愚蠢」的問題。問題與asp.net mvc和谷歌地圖
我正在開發一個包含Google Map的mvc應用程序。
我用這個博客文章作爲靈感
http://mikehadlow.blogspot.com/2008/10/using-google-maps-with-mvc-framework.html
,它的工作如預期。
當我想過濾地圖數據時發生問題。
用例是:
- 我有元件的列表的圖。
- 對於每個元素,我都有一個「跟蹤」鏈接。
- 指向控制器操作的鏈接並具有元素ID作爲參數。
- 控制器操作返回一個視圖。
- 的觀點有一些JavaScript調用另一個控制器動作
- 控制器動作返回我的地圖數據作爲JSON
- 腳本初始化一個谷歌地圖,並在地圖上顯示的JSON數據。
我遇到問題4.問題的核心是獲取原始元素的id到返回JSON數據的操作。
這是我試過的。
我創建了一個具有public int id屬性的參數類。地圖視圖使用這個類作爲「查看數據類」
在視圖中,我添加了一個隱藏的輸入字段,該字段用數據類中的id值填充。
<input type="hidden" id="_lblId" value="<%=Model.Id%>"/>
之後,我包括了應該加載Map的JavaScript文件,從控制器中獲取地圖數據。
這是我遇到問題的地方。
的jQuery:
$(function() {
var id = parseInt($("#_lblId").val());
$.ajaxSetup({ cache: false });
if (google.maps.BrowserIsCompatible()) {
$.getJSON("/Maptest/Element/Tracemap", {id: id}, initialise);
}
});
控制器動作:
public ActionResult Tracemap(int id)
{
var map = new Map();
var tracedata = _dataRep.ListSkanningerPaaKomponent(Convert.ToInt32(id));
map.Name = "trace for element - " +id;
map.Zoom = 2;
map.LatLng = new LatLng { Latitude = 0.0, Longitude = 0.0 };
var cnt = 0;
foreach (var t in tracedata)
{
cnt++;
var trace = new Trace
{
Name = "Trace " + cnt,
LatLng = new LatLng {Latitude = (double) t.Lat, Longitude = (double) t.Long},
Dato = (DateTime) t.Dato,
Tid = (DateTime) t.Tid,
Person = t.PersonId
};
map.Add(trace);
}
return Json(map);
}
如果我在控制器動作設置斷點它永遠不會被調用。如果我調試javascript的id值是正確的。
使用螢火蟲我得到這個錯誤:500內部服務器錯誤。它試圖調用的鏈接是:http://localhost:63246/Maptest/Element/Tracemap?_=1254848265779&id=18
如果我將操作參數更改爲字符串。中斷點被擊中,但是id爲空。
任何想法如何解決這個問題?或者其他方式獲取元素Id到JSON控制器操作?
你的路由設置如何? – 2009-12-14 16:02:51