POST를 통해 ASP.NET MVC 컨트롤러에 GUID 배열을 매개 변수로 전달하는 방법을 알아낼 수 없습니다. 내가 뭘 놓치고 있니? 이 작업을 수행하는 더 간단한 방법이 있습니까? 내 FooController에서ASP.NET MVC 매개 변수 바인딩 : 컨트롤러 메서드에 목록이나 배열을 POST하는 방법?
<form method="post" action="/Foo/Bar" >
<input name="itemIds" type="hidden" value="["8cd52539-c371-402a-b8be-12775f03ab68","8c97f9e0-666c-41ba-a914-72815745d1f0"]">
<button type="submit">Submit</button>
</form>
: HTML 결과
<form method="post" action="/Foo/Bar" >
<input name="itemIds" type="hidden" value="{{ ctrl.itemIds }}">
<button type="submit">Submit</button>
</form>
: 내 AngularJS와 마크 업에서
내가 위의 디버깅 할 때
[System.Web.Mvc.HttpPost]
public ActionResult Bar([FromBody]Guid[] itemIds) => ...
, 내 HTTP 게시물에 보인다 정확한 것이지만 itemIds
은 Bar
입니다. 이 일을 바꿀 수 있도록 도와 주시겠습니까? 내 JS 모델에 이미 GUID 배열이 있으므로 요청 본문을 채우는 더 좋은 방법이 있습니까?
itemIds
'Guid'가 '문자열'로 건너 뛸 수 있다고 생각합니다. 그러면 'Guid'로 캐스팅됩니다. 이상한 이유로, 당신은 위에서와 같이 기본 MVC 매개 변수를 사용할 때 일반적으로 형식을 안전하게 형 변환하지 않습니다. – Greg
그건 나를 슬프게합니다. 매개 변수를 Guid [] 대신 문자열로 변경하면 백 슬래시, 대괄호 및 쉼표가 포함 된 단일 문자열이 만들어 지므로 더 나쁩니다. 더 우아한 방법의 아이디어 - 하나 이상의 문자열 배열이나 목록보다는 하나의 문자열을 얻을 수있는 적어도 하나? –
기본 Json 객체를 만든 다음 전달할 수 있습니다. 하나의 비 직렬화로 미친 인코딩을 피할 수 있습니다.'{Id = ''}'객체 유형, Id 속성을 가진 기본 객체. 분명히 유효한 Json이 도움이 될 것입니다. – Greg