当从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; }
}
我已经尝试了一切简化,只是发送了一个字符串,但由于某种原因也被取消了。
答案 0 :(得分:0)
Action Method中的参数与MyQuery属性之一存在冲突:它们都被命名为“query”。如果您重命名其中一个,则代码可以正常运行。
public virtual ActionResult SearchSite(MyQuery myQuery)
{
string sendBack = "info to send: " + myQuery.query;
return Content(sendBack);
}