フォームからWeb APIアクションに情報を送信する方法を理解しようとしています。ここに私の見解はWeb APIにJSONオブジェクトを送信する
ある<div id="part-sources">
@foreach (SmallHorse.ProductSource source in Model.Sources)
{
@source.ItemNumber <br />
}
</div>
<label>Part Number</label>
<input type="text" id="part-number" name="part-number" />
<input type="submit" id="save-source" name="save-source" value="Add" />
ここ
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; }
}
ここに私のコントローラのアクションは
です:これは私が使用しようとしているjQueryの/ AJAXです// POST api/partsourceapi
public void Post(PartSourceModel model)
{
// currently no values are being passed into model param
}
私には何が欠けていますか?今、私がデバッグし、Ajaxリクエストがコントローラのアクションに当たったときにステップ実行すると、モデルのパラメータに何も渡されません。
'JSON.stringify'を試したことがありますか? 'data:{model:source}'、あるいはおそらく 'data:source' - jQueryがあなたの変換を処理します... – nnnnnn
はい、私はJSON.stringifyせずに試してみました。私はAJAX側で考えられるすべての可能な組み合わせを試しましたが、コントローラーに何かがないと思っています。私は分かりませんが、これはまったく推測です。 – Cory
"nothing"がモデルのパラメータに渡されているとすると、インスタンス "model"がnullであることを意味しますか?または、その値のデフォルト/ヌルですか?モデルの型を文字列に変更して生の表現を取得するか、入力パラメータを削除してRequest.ContentとRequest.Headersのプロパティを直接調べて、サーバーが受け取っているものを見つけたらどうなりますか? – Snixtor