0

我使用 MVC3。我有`

function userLocation_change()
 {
    var text = $("#userLocation").val();
    alert(text);
    var url = '@Url.Action("GetAllLocations", "Home")';
    var data = text;
    $.post(url, data, function (result) {


        });
}

`

这是我的控制器操作:

public JsonResult GetAllLocations(string userlocation)
    {
        ///...some code...
        return Json(..Something.., JsonRequestBehavior.AllowGet);
    }

问题是每当调用控制器函数时,"userlocation"参数确实具有 NULL 值。我希望将data值传递给控制器​​操作。有人可以告诉我为什么会这样吗?任何更新将不胜感激。谢谢。

4

3 回答 3

0

将您的 jQuery post 函数调用修改为:

$.post(  
    url,  
    { userlocation: text },  
    function(result){
       ....
}); 

这是因为,您必须使用 JavaScript 文字将数据发送到控制器的操作方法。您可以在此处查看使用 JavaScript 调用 Controller 操作的不同方法的完整列表:http ://www.asp.net/ajaxlibrary/jquery_posting_to.ashx

于 2012-11-07T04:27:17.710 回答
0

您的操作有一个名为 的字符串输入参数userlocation,因此在将数据发送到操作时,您应该指定它,就像在下面的代码中所做的那样。

我在这里使用data: { userlocation: text},

function userLocation_change()
 {
    var text = $("#userLocation").val();
    var url = '@Url.Action("GetAllLocations", "Home")';

    $.ajax({
    url: url,
    type: 'POST',
    data: { userlocation: text},     
    success: function (result) {

    }
    });
}

希望这可以解决您的空问题。

于 2012-11-07T05:21:11.007 回答
0

您需要通过Url.Action@Url.Action的此重载方法将参数专门传递给。您可以使用RouteValueDictionary内联构造函数来实例化。


编辑:现在意识到您需要在运行时填充该链接,但该Url.Action方法在渲染时生成链接。我建议将其添加到查询字符串中,然后从控制器方法中的查询字符串中读取它。我怀疑有一种更优雅的方式..但我知道这行得通。

就像是:var url = '@Url.Action("GetAllLocations", "Home")?userlocation=' + $("#userLocation").val();

于 2012-11-07T04:13:24.273 回答