数据没有从jquery ajax调用传递到我的mvc4控制器中的actionresult方法

时间:2012-09-13 21:49:42

标签: c# javascript jquery asp.net-mvc

当从jquery发送json对象到我的控制器时,数据被传递给方法,但由于某种原因是null。此外,我似乎无法发布数据而没有得到404我被迫使用get方法。

我的Javascript和jquery调用如下所示:

var searchQuery = {

    'scope': 'global',
    'query': s
};
console.log(searchQuery);
$.ajax({
    type: "GET",
    url: "Search/SearchSite",
    contentType: "application/json; charset=utf-8",
    data: searchQuery,
    dataType: "json",
    success: function (msg) {
        $("#pageContent").html(msg);
    }
});

我的控制器看起来像这样:

[System.Web.Mvc.HttpGet]
public virtual ActionResult SearchSite(MyQuery query)
{
    string sendBack = "info to send:" + query.query;
    return Content(sendBack);
}

我的班级看起来像这样:

public class MyQuery
{
    /// <summary>
    /// Defines the scope of the search Global etc.
    /// </summary>
    public string scope { get; set; }
    /// <summary>
    /// Defines the search query
    /// </summary>
    public string query { get; set; }
}

我已经尝试了一切简化,只是发送了一个字符串,但由于某种原因也被取消了。

1 个答案:

答案 0 :(得分:0)

Action Method中的参数与MyQuery属性之一存在冲突:它们都被命名为“query”。如果您重命名其中一个,则代码可以正常运行。

public virtual ActionResult SearchSite(MyQuery myQuery)
{
     string sendBack = "info to send: " + myQuery.query;
     return Content(sendBack); 
}