web-dev-qa-db-ja.com

モデルのセット全体をformdataに追加し、MVCで取得する方法

セットされたモデルオブジェクト全体をformdataを介して渡し、コントローラーでモデルタイプに変換するにはどうすればよいですか?

以下は私が試したものです!

JavaScriptパーツ:

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

それをAJAXに渡すと、文字列になり、Request.Form["model"]の値をチェックすると、結果は同じになります。つまり、文字列として受信され、値は"[object object]"になります

フォームデータを介してモデルを渡し、コントローラーで受信する方法はありますか?

66
Guruprasad Rao

ビューがモデルに基づいており、<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');
82
user3559349

Ajaxを使用してフォームデータを送信する場合。これが送信方法です。

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) {
    }
})
19
user3824027

ビュー側では、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
 }
0
Sam