0

答えが見つからない質問が 1 つあります。

(MVC): メイン ビューで、PartialViewを Jquery UI ダイアログにロードしました。私は何かを作成し、送信時にすべてをデータベースに送信します。フォームには、いくつかの写真をアップロードするのに役立つ「複数」属性を持つ input type="file" があります

   ( <input type="file" multiple="") 

. 写真のリスト (HttpPostedFileBase)をデータベースに送信します。問題は、常に NULL リストを受け取ることです。

Q:何が問題なのですか? 動作しない Ajax コードもいくつかあります。

ビューを返す別のコントローラーで使用されている同じコードは非常にうまく機能しています。ダイアログの問題だと思います。

メイン ビューからのダイアログ コード:

 $('#element').dialog({
        autoOpen: false,           
        modal: true,
        open: function (event, ui) {
            $(this).load('@Url.Action("AddCar", "Cars")', function (html) {                    
                $('form', "#sDiv").submit(function () {
                    $.ajax({
                        url: this.action,
                        type: this.method,
                        data: $(this).serialize(),
                        success: function (res) {
                            if (res.success) {
                                $('#element').dialog('close');
                            }
                            window.location.reload();
                        }
                    });
                    return false;
                });
            });
        }
4

1 に答える 1

0

フォームの送信に AJAX を使用しているようです。しかし、それはサポートされていません。jQuery AJAX 関数を使用してファイルをアップロードすることはできません。ファイルのアップロードもサポートするjquery.form プラグインをご覧ください。

そこには2つのキャンプがあります:

  1. HTML5 -ファイル API を使用して AJAX でファイルをアップロードできる最新のブラウザーでサポートされています。
  2. 従来の陣営 - File API をサポートしていない Internet Explorer のようなもので、隠し iframe などの手法にフォールバックしてシミュレートする必要があります。それが jquery.form プラグインの機能です。ブラウザーが属しているキャンプを検出し、適切な手法を使用します。

UploadifyPluploadBlueimp File UploadValums AJAX uploaderなど、他にもチェックアウトできるファイル アップロード コンポーネントが多数あります。基礎となるすべての転送メカニズムをコーディングしたくない場合は、1 つを選択してアプリケーションに統合してください。

于 2012-09-21T09:47:14.740 に答える