私upload.ascx
のプロジェクトには があります。Jquery Popup 内に読み込まれます。
にはコントロールupload.ascx
が含まれています。File Upload
ファイル アップロード コントロールは、ファイルをアップロードし.xlsx and .xls
ます。この検証を行う機能を追加しましJava script
た (不要なファイルのアップロードを防ぐため)。
Onchange of FileUpload
コントロールとOnclick of Submit button
同じ検証関数が呼び出されます。
ファイル アップロード検証関数は、両方の呼び出しに対して機能しています。ユーザーが送信ボタンをクリックすると、同じ関数が呼び出され、正常に動作します。
私の問題は次のとおりです。私の検証機能では、私は書いていreturn false
ます。警告メッセージを表示した後、ページが何らかの URL ( localhost/Admin/Authorization/AcceptFile.aspx
) にリダイレクトされます。AcceptFile
私のActionResult名です。それは起こらないはずです。関数が False を返しています。しかし、フォームが上記の URL にリダイレクトされるのはなぜですか?
間違ったファイル(正しい)の場合に呼び出されないアクション結果にデバッガーを保持しています。ファイルが正しい場合、インデックス ファイルは成功メッセージとともにロードされます (アクションの結果が呼び出され、正常に動作しています)。.
私はMVCフォームを疑っています。間違ったファイルがアップロードされた場合、Action Result を呼び出さずにリダイレクトが発生し、これを停止する必要があります。
<% using (Html.BeginForm("AcceptFile", "Authorization", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
私のJavascript関数:
function checkfile(sender) {
var validExts = new Array(".xlsx", ".xls");
var fileExt = sender.value;
var strValue = false;
fileExt = fileExt.substring(fileExt.lastIndexOf('.'));
if (validExts.indexOf(fileExt) < 0) {
ShowMessage(-1, "Invalid file selected, valid files are .xlsx and .xls types.");
strValue = false;
}
else {
strValue = true;
}
return strValue;
}
私のupload.ascxコード:
<div>
<% using (Html.BeginForm("AcceptFile", "Authorization", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<input type="file" id="fileAuthorization" name="fileAuthorization" onchange="checkfile(this);" />
<input type="submit" id="btnSave" name="btnSave" value="Upload" onclick="javascript:return checkfile(document.getElementById('fileAuthorization'))" />
<%} %>
</div>