Ajax를 ASP.net MVC 컨트롤러에 게시 - 개체 속성이 null입니다.
Ajax 포스트는 다음과 같이 구축되어 있습니다.
var myData = [
{
id: "a",
name: "Name 1"
},
{
id: "b",
name: "Name 2"
}
];
$.ajax({
type: 'POST',
url: '/myurl/myAction',
data: { items: myData },
dataType: 'json',
error: function (err) {
alert("error - " + err);
}
});
또한 MVC 컨트롤러:
[HttpPost]
public JsonResult MyAction(MyClass[] items)
{
}
MyClass
는 데이터의 단순한 표현입니다.
public class MyClass {
public string Name {get; set; }
public string Id {get; set; }
}
javascript가 투고 요청을 하면 컨트롤러 액션은 실제로 2개의 아이템을 수신하지만 이들 아이템의 속성(id, name)은 null입니다.
피들러에서 요청을 체크하면 본문은 다음과 같습니다.
Name | Value
items[0][Name] | Name 1
items[0][Id] | a
items[1][Name] | Name 2
items[1][Id] | b
제가 뭘 놓쳤나요?
제가 뭘 놓쳤나요?
예, 다음 문서를 보고 기본 모델 바인더가 바인딩 컬렉션에 기대하는 올바른 와이어 형식을 이해하십시오.즉, 다음과 같은 것이 아니라, 이것이 기능하기 위해서입니다.
items[0][Name] | Name 1
items[0][Id] | a
items[1][Name] | Name 2
items[1][Id] | b
payload는 다음과 같습니다.
items[0].Name | Name 1
items[0].Id | a
items[1].Name | Name 2
items[1].Id | b
불행히도 jQuery에서는 이 payload를 달성하기가 매우 어렵습니다.이러한 이유로 복잡한 오브젝트/어레이를 AJAX에서 서버로 전송하려면 JSON payload를 사용할 것을 권장합니다.
$.ajax({
type: 'POST',
url: '/myurl/myAction',
data: JSON.stringify({ items: myData }),
contentType: 'application/json',
error: function (err) {
alert("error - " + err);
}
});
주의사항:
data: JSON.stringify({ items: myData })
대신data: { items: myData }
- 추가된
contentType: 'application/json'
- 제거했다
dataType: 'json'
payload는 다음과 같습니다.
{"items":[{"id":"a","name":"Name 1"},{"id":"b","name":"Name 2"}]}
이 코드를 사용하여 문제를 해결할 수 있습니다.
$.ajax({
url: '/myurl/myAction',
data: { '': items },
method: "POST",
dataType: 'json',
success: function (xhr, status, response) {
},
error: function (xhr, status, response) {
}
});
[HttpPost]
public JsonResult MyAction(IEnumerable<MyClass> items)
{
}
언급URL : https://stackoverflow.com/questions/16547491/ajax-post-to-asp-net-mvc-controller-object-properties-are-null
'programing' 카테고리의 다른 글
Kotlin + Jackson을 사용하여 JSON을 목록으로 역직렬화하려면 어떻게 해야 합니까? (0) | 2023.03.05 |
---|---|
Rails 기능 테스트에서 원시 포스트 데이터를 전송하려면 어떻게 해야 합니까? (0) | 2023.03.05 |
사용자 역할에 따른 AngularJS, ui.router, 로드 템플릿 및 컨트롤러 (0) | 2023.03.05 |
스프링 부트에서 다양한 유형의 ResponseEntity를 반환하는 가장 좋은 방법(스프링에서의 REST 오류 처리) (0) | 2023.03.05 |
모든 WooCommerce 체크아웃 필드에 대한 사용자 지정 자리 표시자 (0) | 2023.03.05 |