我有这个莫名其妙,很愚蠢的问题。
我的MVC4应用程序中有一个弱类型的局部视图。在上面我有一个按钮
<input type="button" class="btn btn-primary btn-lg" value="Find" id="fej-find" />
我像这样从控制器发送jQuery ajax调用
//searchedJob.Num = $("#fej-JobNumber").val();
//var DTO = { searchedJob: searchedJob };
var DTO = { searchedJobNumber: $("#fej-JobNumber").val() };
$.ajax({
data: JSON.stringify(DTO),
type: 'POST',
url: '@Url.Action("SearchJobs", "Jobs")',
success: function (msg) {
return alert(msg);
}
});
萤火虫向我展示了这个
但是当我调试时,我的控制器显示了这一点。
我的代码出了点问题。那会是什么呢?
您什么都不需要JSON.stringify
。只需data
使用与操作参数名称(searchedNumber
)相同的键传递参数中的值即可:
$.ajax({
url: '@Url.Action("SearchJobs", "Jobs")',
type: 'POST',
data: { searchedNumber: $("#fej-JobNumber").val() },
success: function (msg) {
alert(msg);
}
});
还要注意,您不应从success
回调中返回任何值。
当您想向服务器发送更大,更复杂的有效负载(例如整个模型)时,可以使用JSON。例如,假设您具有以下视图模型:
public class MyViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<string> Tags { get; set; }
}
您的控制器动作将其用作参数:
[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
...
}
现在,您可以从客户端将其作为JSON发送:
var model = {
id: 5,
name: $('#some_input_field').val(),
tags: [ "tag1", "tag2", "tag3" ]
};
$.ajax({
url: '@Url.Action("SomeController", "SomeAction")',
data: JSON.stringify(model),
contentType: 'application/json',
success: function(result) {
alert(result);
}
});
请注意,在这种情况下,您需要如何将适当的Content-Type请求标头设置为,application/json
以便服务器上的默认模型绑定程序将能够自动将请求正文有效负载反序列化为相应的视图模型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句