在视图中,我收到了HistorySearch
类型的模型。然后我想使用ajax
:
$("#exportCsv").click(function () {
// get model as json
var searchData = '@Html.Raw(Json.Encode(@Model))';
searchData = JSON.stringify({ 'search': searchData });
$.ajax({
//contentType: 'application/json; charset=utf-8',
url: '@Url.Action("ExportToCsv", "BankCosts")',
type: 'POST',
data: searchData,
dataType: 'json',
error: function (xhr) {
alert('Error: ' + xhr.statusText);
},
async: true,
});
});
正如您所看到的,我必须发表评论contentType
,因为出于某种原因,此传递的模型在控制器中设置为null
。
另外,我的控制器编码如下:
[HttpPost]
public void ExportToCsv(HistorySearch search)
{
// search properties are not filled. They are set to default value
}
绑定的东西不能正常工作。收到的search
属性设置为默认值。那里有什么问题?
答案 0 :(得分:0)
JSON.stringify({ 'search': searchData })
会将您的对象转换为字符串,因此会将 ActionResult 传递给字符串而不是对象。
删除JSON.stringify
和ajax调用更改:
$.ajax({url: '...', ..., data: { searchData }, ...