ファイルをアップロードするためのファイル入力を含む部分ビューがあります。このビューのユーザーは、自分のワークステーションからファイルを選択し、アップロード ボタンをクリックします。アップロードのクリックでフォームがアクション メソッドに送信され、ファイルが解析されて同じビューが返され、ビューのいくつかのフィールドに自動入力されます。
すべてがそのままで、完全に機能しています。次のような既存のビューに新しい要件を追加しています。
要件
ユーザーがファイルを選択し、アップロード ボタンをクリックします。アップロード ボタンをクリックすると、フォームがコントローラー アクション メソッドに送信される前に、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)
{
}