2011-04-21 6 views
0

GET 요청을 처리하고 페이지를 반환하는 일부 동작 메서드가있는 asp.net mvc 3 응용 프로그램이 있습니다. 코드는 다음과 같습니다 자바 스크립트. 매개 변수의 배열을 사용하여 새 창 열기

[HttpGet] 
public ActionResult Print(IEnumerable<string> arrayOfIds) 
{ 
    ....................... 
    return View(someModel);  
} 

또한이 작업을 호출하는 자바 스크립트 코드가있다 : urlArray는 정말 큰 일 수있다

window.open('@Url.Action("Print","Appointments")' + urlArray, "Print", "width=620,height=410,scrollbars=yes"); 

. URL 문자열을 사용하지 않고 (아마도 HTTP 요청의 내용을 사용하여)이 데이터를 Action Method에 전달할 수 있습니까? URL이 너무 커서 브라우저에서 작동하지 않기 때문에 필요합니다.

UPD : 내 설명이 분명하지 않을 수 있습니다 ... 내 문제를 해결했습니다.

$.ajax({ 
     url: '@Url.Action("Print","Appointments")', 
     type: "POST", 
     data: { listOfIds : listOfIds }, 
     dataType: "text", 
     traditional: true, 
     success: function (data) { 
      printWindow = window.open('', 'Print'); 
      printWindow.document.write(data); 
     } 
    }); 

이 또한 내가 HttpPost에 HttpGet에서 작업 방법의 속성을 변경 :이 자바 스크립트 코드입니다.

+0

urlArray가 너무 커서 커질 수있는 것은 무엇입니까? – Lazarus

답변

1

양식을 현재 페이지에 게시 한 다음 POST를 통해 모든 것을 서버 측에 전송하는 것이 더 나을 것입니다. 그런 다음 RedirectToAction을 사용하고 서버 측에서 데이터를 전달하십시오.

더 좋은 방법입니다. Javascript를 사용하여 양식을 게시 할 수 있습니다. 그래서 오히려 window.open보다는 당신은 form.submit()

편집을 사용하여 수 있습니다 :

새 창에서 결과를 엽니 양식 태그에 target="_blank"를 추가합니다.

+0

새 창에서 정보를 표시하고 싶기 때문에 새 창을 열어야합니다. –

+0

보기> http://stackoverflow.com/questions/178964/javascript-post-on-form-submit-open-a-new-window – neebz

2

귀하의 질문이 JavaScript와 관련이 있다고 생각하지 않습니다. URL 제한은 HTTP GET의 기능입니다. window.open()으로는 할 수없는 HTTP POST를 사용해야합니다. 이 같은 작업을 수행 할 수 있습니다 그러나

...

window.open('about:blank', 'Print', 'width=620,height=410,scrollbars=yes'); 
document.myForm.target='Print'; 
document.myForm.urlArray=urlArray; 
document.myForm.submit(); 

이 새로운 창에 새로운 창 게시물 기존 HTML 양식 (방법 = "POST")를 엽니 다. 위의 예제는 "urlArray"라는 이름의 숨겨진 필드를 가정합니다. 그러나 당신은 Action Method가 기대하는 것을 제공하면됩니다.

이미 urlArray를 캡처하는 데 사용중인 페이지에 기존 양식이있는 경우이 작업을 상당히 정리할 수 있습니다. 양식을 작성한 후 새 양식을 작성해야합니다. 폼의 onsubmit 이벤트 처리기.

관련 문제