私はJsonの文字列を私のRest APIに渡すことはできません。Web APIのパラメータは常にNullです
WebAPIとEntityframeworkを使用してVS 2015でこのプロジェクトを作成しました。 Odata V3 Controllerとエンティティクラスは、VSによって自動的に生成されます。 GET、およびDELETEメソッドは正常に動作します。私のJsonオブジェクトを残っているAPIのpostとputメソッドに渡すことができなかったので、updateメソッドとaddメソッドは機能しません。パラメータは常に空です。
ここに私の自動生成されたカスタマーエンティティクラスがあります。ここで
public partial class Customer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public string Email { get; set; }
}
私のコントローラ
public IHttpActionResult Post(Customer customer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Customers.Add(customer);
db.SaveChanges();
return Created(customer);
}
// PUT: odata/Customers(5)
public IHttpActionResult Put([FromODataUri] int key, Delta<Customer> patch)
{
Validate(patch.GetEntity());
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Customer customer = db.Customers.Find(key);
if (customer == null)
{
return NotFound();
}
patch.Put(customer);
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!CustomerExists(key))
{
return NotFound();
}
else
{
throw;
}
}
return Updated(customer);
}
これは私のjQueryのコール
var customerData = {
CustomerID: "0",
FirstName: FirstName,
LastName: LastName,
Address: Address,
PhoneNumber: PhoneNumber,
Email: Email
};
var requestBody = JSON.stringify(customerData);
return $.ajax({
url: requestUri,
type: "POST",
data: requestBody
});
ここでは私のシオマネキが
POST http://localhost:1360/odata/Customers/ HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:1360/Pages/Customers.aspx
Accept-Language: en-US
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
接続されているです:キープアライブ のContent-Length :101 ホスト:localhostを:1360 プラグマ:他人のために働い関連する記事のキャッシュなし
{"CustomerID":0,"FirstName":"wer","LastName":"wer","Address":"wer","PhoneNumber":"wer","Email":"wer"}
どれも私のために動作しません:事前に
Receiving JSON-formatted data in a Web API 2 action?
jQuery AJAX post data is null in c# web api controller
感謝を。コードに何が間違っていて、どのように修正するのか教えてください。
しばらくの間はodata3を使用していませんが、put/postはデルタを使用しないと思うでしょう。デルタの代わりにお客様のメソッドシグニチャを試すとどうなりますか? –
Tim
このコードはVSによって自動生成されます。 postメソッドはシグネチャ内の顧客しか持っていませんが、デバッグ中にnull値が返されます。 jsonの文字列が送信されますが。サーバーはそれをデシリアライズできません。 – Sam