1

私はこれが何度も議論されてきたことを知っています。

私は基本的に、私の見解ではファイルを更新できるようにしたいと考えています。このファイルは、コントローラーが期待するモデルにマップする必要があります。

public ActionResult Create(Company company)
{
    //Do something with the received model
}

モデル:

public class Company
{
    public int Id { get; set; }
    public HttpPostedFileBase PictureUpload { get; set; }
    ...
}

これは問題なく動作しています。ここで、ファイルを含むフォーム データを AJAX 経由で送信したいと考えています。したがって、私はこれを私の見解で使用しています:

@using (Ajax.BeginForm("Create", "Company", null, new AjaxOptions { HttpMethod = "Post", OnSuccess = "ajaxOnSuccess", OnFailure = "alert('Error message.');" }, new { @class = "ym-form", enctype = "multipart/form-data" }))

これは基本的に機能していますが、ファイルのアップロードは機能しません (私が読む限り、ajax はファイルにアクセスできないため、送信できません)。

バックエンド (コントローラー/モデル) を変更せずに、この問題の最善の解決策を教えてください。

例)この記事を読みました: http://ajeeshms.in/Blog/Article/1/upload-files-using-ajax-in-asp-mvc

これには 2 つの優れた可能性がありますが、バックエンドを変更する必要があります。これは、私のモデルで HttpPostedFileBase 型に自動的にマッピングすることができなくなるためです。

ビューに機能するプラグインを使用したり、新しいブラウザーでのみサポートされている手法を使用したりすることは気にしません。

4

4 に答える 4

1

このコードを試してください

//form.js への参照を追加

<script src="http://malsup.github.com/jquery.form.js"></script>

@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { @enctype ="multipart/form-data",@id="formid" }))
{

}

//Javascript code

<script type="text/javascript">

$('#formid').ajaxForm(function (data) {

});

</script>

これは ajax サブミットとして機能します。

// AjaxForm の詳細については、こちらを参照してください

于 2013-09-16T15:53:18.823 に答える
0

これをお試し下さい@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { id = "ym-form", enctype="multipart/form-data" }))

于 2013-04-10T12:18:49.513 に答える
0

Demian Flavius からのこの回答に基づいて作成しました: How to do a ASP.NET MVC Ajax form post with multipart/form-data?

基本的には、あなたが言及した記事のように ajax で簡単にアップロードできるようにするのは、新しい JavaScript の FormData オブジェクトです。

于 2013-04-11T11:06:11.297 に答える