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; }
}
私はすべてを簡素化し、文字列を送信するだけで試しましたが、それも何らかの理由で無効になります。