Я просто попадаю в asp.net mvc и jquery, так что это может быть «глупый» вопрос.Проблема с asp.net mvc и google maps
Я разрабатываю приложение mvc, которое содержит карту Google.
Я использовал этот пост в блоге, как вдохновение
http://mikehadlow.blogspot.com/2008/10/using-google-maps-with-mvc-framework.html
и он работает, как ожидалось.
Проблема возникает, когда я хочу фильтровать данные карты.
Прецедент является следующее:
- У меня есть мнение со списком элементов.
- Для каждого элемента у меня есть ссылка «Трассировка».
- Ссылка указывает на действия контроллера и имеет идентификатор элемента в качестве параметра.
- Действие контроллера возвращает вид.
- мнения имеют некоторые JavaScript, который вызывает другие действия контроллера
- Действие контроллера возвращает мои данные карты в формате JSON
- Сценарий инициализирует карту Google и отображает данные в формате JSON на карте.
У меня проблемы с 4. Ядро проблемы заключается в получении идентификатора исходного элемента для действия, которое возвращает данные JSON.
Это то, что я пробовал.
Я создал класс параметров, который имеет общедоступное свойство int id. Вид карты использует этот класс как «Просмотр класса данных»
В представлении я добавил скрытое поле ввода, которое заполняется значением id из класса данных.
<input type="hidden" id="_lblId" value="<%=Model.Id%>"/>
После этого я включаю файлы 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 верное.
Использование firebug Я получаю эту ошибку: 500 Внутренняя ошибка сервера. И ссылка, которую он пытается вызвать, такова: http://localhost:63246/Maptest/Element/Tracemap?_=1254848265779&id=18
Если я изменяю параметр действия на строку. Точка разрыва попадает, но тогда id пуст.
Любые идеи, как это решить? Или другие способы получить идентификатор элемента в действие контроллера JSON?
Как ваша настройка маршрутизации? –