2014-07-15 4 views
0

사용자가 서버에 제출하기를 원하는 양식이 있습니다. 제 (간체) 모델은 같다 :아약스없이 클라이언트에서 서버로 복잡한 객체 배열 전달

public class MyData 
{ 
    public int MyInt { get; set; } 
    public ICollection<ComplexObject> MyArray { get; set; } 
} 

public class ComplexObject 
{ 
    public int MyComplexObjectInt { get; set; } 
    public string MyComplexObjectString { get; set; } 
} 

이 객체를 수신 제어기 동작은 다음과 같다 :

[HttpPost] 
public ActionResult Create(MyData model) 
{ 
    ... 
} 

I는 클라이언트 측에서 "ComplexObject"어레이 (jQuery를) 갖도록 나는 사용자의 입력을 채 웁니다.

문제점 : jQuery 배열 값을 포함하고 컨트롤러에서이 배열을 검색하도록 "MyArray"값을 어떻게 설정할 수 있습니까?

참고 : 저는이 문제를 상당히 씩 봤습니다. 발견 한 모든 해결책은 아약스에 대해 이야기했습니다. 나는이 솔루션들에서 흥미롭지 않으며 아약스없이 할 수 있을지 궁금해.

감사합니다.

+0

을 표준 POST 또는 GET 요청 jus를 사용하여 수행 할 수 있습니다. 또한 t. 끝 점이'process.aspx'라면'$ .ajax ('process.aspx') 대신'

'를 사용해야합니다. – pawel

+0

@pawel ok, 어떻게이 jquery 배열을 가져 와서 다른 모델 필드 (내 경우에는 MyInt)와 함께 컨트롤러에 전달할 수 있습니까? – ofirbt

+0

다음과 같은 내용이 있습니다 : ' 양식을 제출하기 전에 ComplexObject를'JSON.stringify (jQueryArray) '에 입력하십시오. – pawel

답변

0

AJAX로 수행 할 수있는 작업은 표준 POST 또는 GET 요청을 사용하는 것입니다. 끝점이 process.aspx 인 경우 $.ajax('process.aspx') 대신 <form action="process.aspx">을 사용해야합니다.

그래서 당신은, 당신의 백엔드에서 일부 데이터를 얻을 전체 왕복 (안 AJAX) 폼 숨겨진 입력을 사용하여 서버에 다음 사용자가 제공 한 데이터와 결합하여이를 처리해야하는 경우 :

를 당신이 MyInt과 함께 ComplexObject를 보낼 필요로 할 때
<form action="process.aspx" method="POST" id="myForm"> 
    <input type="hidden" name="MyInt" value="<%= MyInt %>" /> 
    <input type="hidden" name="ComplexObject" value="" /> 
</form> 

그런 다음, JSON 문자열로 객체를 직렬화 숨겨진 필드에 넣어 형태로 제출할 수 있습니다 뭔가 AJAX와 함께 할 수 있다면

$('[name="ComplexObject"]').val(JSON.stringify(userObject)); 
$('#myform').submit(); 
관련 문제