Передача значений в контроллер через Javascript, возвращаемая View MVC3 Razor - PullRequest
3 голосов
/ 12 июля 2011

Я новичок в MVC.Я пытаюсь передать значения долготы и широты, полученные с помощью геолокации, моему контроллеру, чтобы я мог использовать эти значения для идентификации и получения правильных данных из моей базы данных.

Вот мой Javascript

function auto_locate() {


    alert("called from station");
    navigator.geolocation.getCurrentPosition(show_map);



function show_map(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    var locstring = latitude.toString() + "." + longitude.toString();
    var postData = { latitude: latitude, longtitude: longitude }
    alert(locstring.toString());

}

}

Все это прекрасно работает;

Теперь мне нужно передать postData или locstring моему контроллеру.Что выглядит следующим образом:

[HttpGet]
public ActionResult AutoLocate(string longitude, string latitude)
{
    new MyNameSpace.Areas.Mobile.Models.Geo
    {
        Latitude = Convert.ToDouble(latitude),

        Longitude = Convert.ToDouble(longitude)

    };


// Do some work here to set up my view info then...
    return View();
}

Я искал и исследовал, и я не смог найти решение.

Как я могу вызвать приведенный выше javascript из HTML.ActionLink и получить Longitide и Latitude для моего контроллера?

1 Ответ

5 голосов
/ 12 июля 2011

Вы можете использовать AJAX:

$.ajax({
    url: '@Url.Action("AutoLocate")',
    type: 'GET',
    data: postData,
    success: function(result) {
        // process the results from the controller
    }
});

, где postData = { latitude: latitude, longtitude: longitude };.

Или, если у вас есть actionlink:

@Html.ActionLink("foo bar", "AutoLocate", null, null, new { id = "locateLink" })

, вы можете AJAXify эту ссылку какэто:

$(function() {
    $('#locateLink').click(function() {
        var url = this.href;
        navigator.geolocation.getCurrentPosition(function(position) {
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;
            var postData = { latitude: latitude, longtitude: longitude };
            $.ajax({
                url: url,
                type: 'GET',
                data: postData,
                success: function(result) {
                    // process the results from the controller action
                }
            });
        });

        // cancel the default redirect from the link by returning false
        return false;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...