program story

전체 모델 세트를 formdata에 추가하고 MVC에서 가져 오는 방법

inputbox 2020. 11. 15. 11:16
반응형

전체 모델 세트를 formdata에 추가하고 MVC에서 가져 오는 방법


전체 세트 모델 객체를 formdata를 통해 전달하고 컨트롤러에서 모델 유형으로 변환하는 방법은 무엇입니까?

아래는 내가 시도한 것입니다!

자바 스크립트 부분 :

model = {
             EventFromDate: fromDate,
             EventToDate: toDate,
             ImageUrl: imgUrl,
             HotNewsDesc: $("#txthtDescription").val().trim(),
        };
formdata.append("model",model);

그런 다음 AJAX를 통해 전달하면 문자열이 Request.Form["model"]되고 결과 이 동일하다는 것을 확인하면 문자열로 수신되고 값이"[object object]"

formdata를 통해 모델을 전달하고 컨트롤러에서 수신하는 방법이 있습니까?


뷰가 모델을 기반으로하고 <form>태그 내부에 컨트롤을 생성 한 경우 모델을 다음을 FormData사용하여 직렬화 할 수 있습니다.

var formdata = new FormData($('form').get(0));

여기에는 다음으로 생성 된 모든 파일도 포함됩니다. <input type="file" name="myImage" .../>

사용하여 다시 게시하십시오.

$.ajax({
  url: '@Url.Action("YourActionName", "YourControllerName")',
  type: 'POST',
  data: formdata,
  processData: false,
  contentType: false,         
});

컨트롤러에서

[HttpPost]
public ActionResult YourActionName(YourModelType model)
{
}

또는 (모델에에 대한 속성이 포함되지 않은 경우 HttpPostedFileBase)

[HttpPost]
public ActionResult YourActionName(YourModelType model, HttpPostedFileBase myImage)
{
}

양식에없는 추가 정보를 추가하려면 다음을 사용하여 추가 할 수 있습니다.

formdata.append('someProperty', 'SomeValue');

Ajax를 사용하여 Form 데이터를 보내려는 경우 이것이 보내는 방법입니다.

var formData = new FormData();

//File Upload
   var totalFiles = document.getElementById("Iupload").files.length;


for (var i = 0; i < totalFiles; i++) {
    var file = document.getElementById("Iupload").files[i];

    formData.append("Document", file);
}

formData.append("NameCode", $('#SelecterID').val());
formData.append("AirLineCode", $('#SelecterID').val());


$.ajax({
        url: "/Controller/ActionName",
        type: "POST",
        dataType: "JSON",
        data: formData,
        contentType: false,
        processData: false,
        success: function (result) {
    }
})

보기 측면에서 ajax를 사용하는 경우

$('#button_Id').on('click', function(){
        var Datas=JSON.stringify($('form').serialize());
        $.ajax({
            type: "POST",
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            url: '@Url.Action("ActionName","ControllerName")',
            data:Datas,
            cache: false,
            dataType: 'JSON',
            async: true,
            success: function (data) {

            },
        });
    });

컨트롤러 측에서는

 [HttpPost]
 public ActionResult ActionName(ModelName modelObj)
 {
 //Some code here
 }

참고 URL : https://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc

반응형