4

ファイルをアップロードするためのファイル入力を含む部分ビューがあります。このビューのユーザーは、自分のワークステーションからファイルを選択し、アップロード ボタンをクリックします。アップロードのクリックでフォームがアクション メソッドに送信され、ファイルが解析されて同じビューが返され、ビューのいくつかのフィールドに自動入力されます。

すべてがそのままで、完全に機能しています。次のような既存のビューに新しい要件を追加しています。

要件

ユーザーがファイルを選択し、アップロード ボタンをクリックします。アップロード ボタンをクリックすると、フォームがコントローラー アクション メソッドに送信される前に、2 つのボタン オプションを含む JavaScript 確認ダイアログがユーザーに表示されます。これらのボタンは、「Buffer Run Parsing」と「Normal Parsing」です。これらのボタンのいずれかをクリックすると、コントローラー アクション メソッドにポストされます。

投稿時のコントローラーアクションメソッドでは、私の目標は、押されたボタンをキャプチャすることであり、押されたボタンに基づいて、それに応じてファイル解析ロジックを選択します。

問題

2 つのボタンを表示する JavaScript 関数を作成しましたが、ダイアログ ボックスは自動的に消え、フォームはコントローラーに送信されます。どちらかの確認ボタンをクリックするまで投稿しないようにしたいです。

これが私がやっていることです:

メイン ビュー:

@using (Html.BeginForm("Create", "RunLogEntry", FormMethod.Post, new { id = "form", enctype = "multipart/form-data"}))
{
    <div id="main">
        @Html.Partial("_RunLogEntryPartialView", Model)
    </div>
}

部分図:

<button name="submit" class="art-button" type="submit" value="Upload" onclick="initUploadDailog();return false;"
    style="width: 100px">
    Upload</button>

<div id="uploadConfirmation" style="font-size: 10px; font-weight: normal; overflow: scroll;
    width: 800px; height: 450px; display: none;">
</div>

JS 関数:

 function initUploadDailog(e) {
        currentForm = $(this).closest('form');
        UploadDialog = $("#uploadConfirmation").dialog({
            modal: true,
            width: 400,
            autoOpen: true,
            title: 'Please select parsing type for Test Completed Computation',
            buttons: {
                "Normal Parsing": function () {
                    $("#hiddenInput").val("Normal");
                    alert(currentForm.innerHtml());
                    currentForm.submit();
                },
                "Buffer Parsing": function () {
                    $("#hiddenInput").val("Buffer Run");
                    currentForm.submit();
                }
            }
        });
    }

コントローラ:

   [HttpPost]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(RunLogEntry runLogEntry, String ServiceRequest, string Hour, string Minute, string AMPM,
                                     string submit, IEnumerable<HttpPostedFileBase> file, String AssayPerformanceIssues1, List<string> Replicates)
        {
}
4

3 に答える 3

1

あなたがしなければならないことがいくつかあります。

まず、Modaltrue に設定します。False は、ユーザーがボックス以外のページ上の他のものをクリックすることを妨げないことを意味します。

onclick2 番目に、送信ボタンの を変更して、送信ボタン がクリックされたときにフォームが単純に送信されないようにする必要があります;return false;onclick=initUploadDailog();return false;"

第 3 に、適切なボタンが選択されると、ダイアログ自体がフォームを送信する必要があります。ここを参照してください:jqueryダイアログ:送信ボタンのクリックを確認してください

于 2013-03-28T22:24:48.700 に答える