Json 문자열을 내 Rest API에 전달할 수없는 이유를 찾으려고합니다.웹 API 매개 변수는 항상 Null입니다.
WebAPI 및 Entityframework를 사용하여 VS 2015에서이 프로젝트를 만들었습니다. Odata V3 Controller와 엔티티 클래스는 VS에 의해 자동 생성됩니다. GET 및 DELETE 메서드는 제대로 작동합니다. 하지만 내 Json 개체를 나머지 API 게시 및 메서드에 전달할 수 없기 때문에 업데이트 및 메서드 추가가 작동하지 않습니다. 매개 변수는 항상 비어 있습니다.
내 생성 된 고객 엔티티 클래스는 다음과 같습니다. 여기
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; }
}
이 내 JQuery와 전화 내 컨트롤러
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);
}
입니다 여기에
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
연결 : 연결 유지 콘텐츠 길이를 : 101 01 23,516,호스트 : 로컬 호스트 : 1360 에서 Pragma : 다른 사람을 위해 일 관련 게시물의
{"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