2014-04-24 2 views
1

컨트롤러 메소드의 드롭 다운 목록에서 선택한 옵션의 텍스트를 가져 오려고합니다. 하지만 아래 코드에서는 변경된 텍스트가 아닌 초기 텍스트 만 가져옵니다.json을 통해 드롭 다운 목록의 선택된 텍스트 전달

data.submit 이전의 data.jsonOfLog는 변경된 텍스트를 가져 오지만이 텍스트는 컨트롤러에 전달되지 않습니다.

[HttpPost] 
public JsonResult GoodSave(string jsonOfLog) 
{ 

보기에서 : 컨트롤러에서

업로드하려고 할 때

<script type="text/javascript"> 
     $(function() {     
      json = { jsonOfLog: $("#ddlDocumentType option:selected").text() }; 
      $('#fileupload').fileupload({ 
       dataType: 'json', 
       contentType: 'application/json; charset=utf-8', 
       url: '/Home/GoodSave', 
       data: JSON.stringify(json), 
       add: function (e, data) { 
        $('#fileuploadbutton').click(function() { 
         data.jsonOfLog = $("#ddlDocumentType option:selected").text(); 
         data.submit(); 
        }) 
       }     
      }); 
     }); 
    </script> 

enter image description here

+0

사용'$ ("#의 ddlDocumentType") 발() ' – Satpal

+0

@Satpal - 그는 텍스트가 아니라 값을 원합니다. – Archer

+0

@Archer, 제목 'json을 통해 dropdownlist의 선택된 값 전달하기' – Satpal

답변

2

이는 formData 변경됩니다 ...

<script type="text/javascript"> 
    $(function() {     
     $('#fileupload').fileupload({ 
      contentType: 'application/json; charset=utf-8', 
      url: '/Home/GoodSave' 
     }) 
     .on("fileuploadsubmit", function (e, data) { 
      data.formData = { 
       jsonOfLog: $("#ddlDocumentType option:selected").text() 
      }; 
     }); 

     $("#fileuploadbutton").on("click", function() { 
      $("#fileupload").submit(); 
     }); 
    }); 
</script> 

데이터를 문자열로 변환해야한다고 생각하지 않으므로 위의 방법을 시도해보고 작동하지 않으면 이전처럼 stringify를 사용하십시오. 서버 메서드의 매개 변수와 일치해야하는 속성 이름을 가진 데이터를 전달할 때 필요하지 않습니다.

이것은 blueimp 파일 업로드 문서에서 온다 ...

https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data

+0

빠른 답장을 보내 주셔서 감사합니다! "업로드"버튼을 클릭하면 컨트롤러 메소드가 호출되기를 원합니다. 제안 된 변경 사항이 있으면 "파일 선택"버튼을 클릭하면 호출됩니다. – Nands

+0

오케이 - 내가 고칠 것이다. – Archer

+0

또한 data.submit 이전의 data.jsonOfLog는 변경된 텍스트를 가져 오지만이 텍스트는 컨트롤러에 전달되지 않습니다. 컨트롤러 메서드는 드롭 다운 목록의 초기 텍스트를 가져옵니다. – Nands

0

마지막으로, 어떤 일을하는 것은 이것이다 :.

<script type="text/javascript"> 
    $(function() { 
     $('#fileupload').fileupload({ 
      add: function (e, data) { 
       $('#fileuploadbutton').click(function() { 
        $.ajax({ 
         type: 'POST', 
         cache: true, 
         url: '/Home/GoodSave', 
         data: { jsonOfLog: $("#ddlDocumentType option:selected").text() }, 
         success: function (data) { 

         }, 
         error: function (data) { 
          alert("error"); 
         } 
        }); 
       }); 
      }  
     });  
    });  
</script> 
관련 문제