将JSON对象发送到Web API
我试图找出如何将表单中的一些信息发送到Web API操作。 这是我试图使用的jQuery / AJAX:
var source = { 'ID': 0, 'ProductID': $('#ID').val(), 'PartNumber': $('#part-number').val(), 'VendorID': $('#Vendors').val() } $.ajax({ type: "POST", dataType: "json", url: "/api/PartSourceAPI/", data: JSON.stringify({ model: source }), success: function (data) { alert('success'); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 }); } });
这是我的模特
public class PartSourceModel { public int ID { get; set; } public int ProductID { get; set; } public int VendorID { get; set; } public string PartNumber { get; set; } }
这是我的看法
@foreach (SmallHorse.ProductSource source in Model.Sources) { @source.ItemNumber
}
这是我的控制器动作
// POST api/partsourceapi public void Post(PartSourceModel model) { // currently no values are being passed into model param }
我错过了什么? 现在,当我调试并在ajax请求命中控制器操作时逐步执行此操作时,没有任何内容传递给模型参数。
试试这个:
jQuery的
$('#save-source').click(function (e) { e.preventDefault(); var source = { 'ID': 0, //'ProductID': $('#ID').val(), 'PartNumber': $('#part-number').val(), //'VendorID': $('#Vendors').val() } $.ajax({ type: "POST", dataType: "json", url: "/api/PartSourceAPI", data: source, success: function (data) { alert(data); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); //jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 }); } }); });
调节器
public string Post(PartSourceModel model) { return model.PartNumber; }
视图
现在,当您在填写文本框后单击“ Add
”时, controller
将在警报中吐出您在PartNumber
框中编写的内容。
更改:
data: JSON.stringify({ model: source })
至:
data: {model: JSON.stringify(source)}
在你的控制器中你这样做:
public void PartSourceAPI(string model) { System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); var result = js.Deserialize(model); }
如果你在jquery中使用的url是/api/PartSourceAPI
那么控制器名称必须是api
,action(方法)应该是PartSourceAPI
var model = JSON.stringify({ 'ID': 0, 'ProductID': $('#ID').val(), 'PartNumber': $('#part-number').val(), 'VendorID': $('#Vendors').val() }) $.ajax({ type: "POST", dataType: "json", contentType: "application/json", url: "/api/PartSourceAPI/", data: model, success: function (data) { alert('success'); }, error: function (error) { jsonValue = jQuery.parseJSON(error.responseText); jError('An error has occurred while saving the new part source: ' + jsonValue, { TimeShown: 3000 }); } }); var model = JSON.stringify({ 'ID': 0, ...': 5, 'PartNumber': 6, 'VendorID': 7 }) // output is "{"ID":0,"ProductID":5,"PartNumber":6,"VendorID":7}"
您的数据类似于“{”model“:”ID“:0,”ProductID“:6,”PartNumber“:7,”VendorID“:8}}”web api控制器无法将其绑定到您的模型
我相信你需要在model
周围引用:
JSON.stringify({ "model": source })