asp.net mvc 3 -通过Javascript将值传递给控制器返回视图

asp.net mvc 3 - Passing values to Controller via Javascript return View MVC3 Razor

本文关键字:控制器 返回 视图 值传 mvc net -通过 Javascript asp      更新时间:2023-09-26

我是全新的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();
}

我已经搜索和研究了,我还没能找到一个解决方案。

我如何从HTML调用上面的javascript。ActionLink并获取longtide和Latitude到我的控制器?

您可以使用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" })

你可以像这样ajax化这个链接:

$(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;
    });
});