1. ホーム
  2. javascript

MVCでモデル一式をformdataに追加して取得する方法

2023-07-29 19:05:37

質問

フォームデータからモデルオブジェクトを渡し、コントローラでモデルタイプに変換するにはどうしたらよいでしょうか。

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

JavaScriptの部分です。

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

の値を確認し、AJAXで渡すと文字列になります。 Request.Form["model"] の値をチェックしても結果は同じです。つまり、文字列として受け取られ、値は "[object object]"

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

どのように解決するのですか?

ビューがモデルに基づいていて、コントロールが <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');