2011-11-16 2 views
2

우리는 knockoutjs postJson 유틸리티를 사용하여 asp.net mvc보기 양식을 제출합니다. 모두 잘 작동하지만 이제는 양식에 파일 업로드 옵션을 추가하려고합니다. 거기에 어떤인가viewModel 게시 및 asp.net mvc 3 및 knockoutjs 파일 업로드

Uploading file in asp.net mvc 당, 우리는 요소와 형태에 enctype = "다중/폼 데이터"속성을 추가하지만 우리는 컨트롤러

에 Request.Files 컬렉션에서 모든 파일을 얻을하지 않습니다 ko.utils.postJson을 사용하여 문제가 있습니까? 내 양식 데이터와 함께 파일을 업로드하는 더 좋은 방법이 있습니까?

  1. 내 모든 요소는 KO 그것은 양식 제출을 시뮬레이션 할 수 있도록 우리는 postJson을 사용하고 컨트롤러가 postJson SRC가하고있는 다른보기

답변

1

로 리디렉션 할 수 있습니다 녹아웃에게

  • 를 제거 할 수 있도록 결합 사용 이와 같이

    for (var key in data) { 
        var input = document.createElement("INPUT"); 
        input.name = key; 
        input.value = ko.utils.stringifyJson(ko.utils.unwrapObservable(data[key])); 
        form.appendChild(input); 
    } 
    

    , F : 내부 폼 요소에 입력 요소로 삽입합니다 그것이 만들어 각 입력에 JSON.stringify 및 파일 입력의 데이터를 자바 스크립트를 통해로드하여 postJson 호출을 통해 게시 할 수는 없으므로 파일을 업로드하고 두 개의 개별 요청에 JSON을 게시하는 것이 가장 좋습니다. postJson 메서드가 (메서드를 재정 의하여)이 형식의 파일 입력을 삽입 할 수도 있지만 해커 유형을 생성하고 앞으로 호환되지 않을 수 있습니다.

  • +0

    Html.TextBoxFor 형식 구문을 사용하지 않으므로 컨트롤러 모델과 바인딩하는 방법을 잘 모릅니다. 각 입력에 KO 데이터 바인딩을 사용하고 요소를 선택합니다. jquery validate/submit 처리기를 사용하여 viewModel save 메소드를 호출합니다.이 메소드는 postJson을 사용하여 제출합니다. 이전에는 $ ajax를 사용했습니다. 나는 JavaScript에 익숙하지 않기 때문에 확실한 기초가 없다. –

    +0

    모델 바인더는 데이터가 클라이언트에서 서버로 돌아올 때 사용되며, 액션 매개 변수로 직렬화된다. JSON 또는 일반 양식의 게시물 데이터를 모두 해석 할 수 있으므로 둘 중 하나를 사용할 수 있습니다. –

    +0

    이 작업을 수행하는 방법을 보여줄 수 있습니까? 서버 모델과 일치하는 KO viewModel 있습니다. 명시 적으로 viewModel + 파일 입력을 서버에 제출하는 방법 –