2010-04-28 5 views
0

웹 서비스 활용에 비교적 새로운 점이 있습니다. 입력 컨트롤이 런타임에 동적으로 생성되고 얼마나 많은 컨트롤 값이 전달되는지 ASP.Net 폼에서 데이터를 받아들이는 데이터를 생성하려고합니다.알 수없는 매개 변수 수를 웹 서비스에 전달

데이터를 얻기 위해 jQuery의 serialize()를 사용 하겠지만 매개 변수에 대해 웹 서비스를 허용하려면 어떻게해야합니까? 아마도 serializeArray()를 사용할 수 있다고 생각했지만 여전히 자바 스크립트 배열에서 사용할 변수의 유형을 알지 못합니다.

마지막으로 데이터를 웹 서비스로 보내기 전에 데이터로 간단한 데이터 전송 객체를 만들어야한다고 생각했습니다. DTO 경로를 따라 가고 싶지 않았습니다. 훨씬 더 단순한 방법이나 내가 따라야하는 확립 된 모범 사례가 있다면.

어떤 방향으로도 미리 감사 드리며 충분히 명확하지 않거나 궁금한 점이 있으면 알려주십시오.

+0

아키텍처를 제대로 이해하지 못하고 있지만 입력 값을 웹 서비스에 전달할 ASP.Net 양식을 완벽하게 제어하는 ​​것처럼 들립니다. 이 경우 별도의 웹 서비스가 필요한 이유는 무엇입니까? – MusiGenesis

+0

입력 유효성 검사의 일부로 필요한 서버 처리가 있습니다. 컨트롤 ID에 들어있는 세부 정보에 따라 특별한 유효성 검사 규칙이 있습니다. – Billyhole

답변

0

글쎄, 나는 항상 자신이 생각하는 데이터 전송 객체를 만들었고, 이것은 항상 뇌 솔루션의 선두였으며, 아마도 이것을 처리하는 방법에 대한 가장 좋은 방법은 아마 존재할 것이라고 생각했다.

0

헤드 라인 질문에 대한 답변 웹 서비스 메서드에 params 키워드를 사용하는 것입니다 (이는 ASP.Net 웹 서비스입니다 가정) :

[WebMethod] 
public void SendSomething(params string[] somethings) 
{ 
    foreach (string s in somethings) 
    { 
     // do whatever you're gonna do 
    } 
} 

예 :

SendSomething("whatever"); 
SendSomething("whatever 1", "whatever 2", "whatever 3"); 

에서 실제로는 params 키워드가 필요하지 않습니다. 일반 배열을 매개 변수로 사용하면 알 수없는 값을 전달할 수 있습니다.

+0

컨트롤 ID와 값이 키 값 쌍으로 필요하므로 var postData = $ ('# aspnetForm')을 사용하여 JSON 문자열을 전달하려고합니다. serializeArray(); 및 다음 $ .ajax ({data : JSON.stringify (postData). 그리고 "System.Collections.Generic.IDictionary'2 [[System.String, ... 않습니다 형식으로 오류가 문자열 배열을 받아들이도록 웹 서비스를 설정 배열의 역 직렬화를 지원합니다. "그래서 아마 다차원 배열이 필요하고 문자열 []로 웹 서비스의 매개 변수를 변경하고 여전히 동일한 예외를 받았습니다. – Billyhole

+0

AJAX를 통해 클라이언트 페이지에서 웹 서비스를 호출하면 양식이 너무 커서 정기적 인 포스트 백을 수행 할 수 없습니까? – MusiGenesis

+0

당신은 정확합니다. 기본적으로 더 복잡한 입력 검증이므로 포스트 백을 수행하지 않으려 고합니다. , 여전히 유효성 검사 만 입력하십시오 – Billyhole