我的项目中有一个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。但是表单被重定向到Above URL为什么。?
我在我的Action Result中保留了调试器,如果它的文件错误(正确),则不会调用它。如果正确的文件,索引文件将加载成功消息(动作结果被调用并且工作正常)。
我怀疑是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>
答案 0 :(得分:4)
我的自我找到了问题。
是的,我的怀疑是正确的。问题是
onsubmit = "javascript:return checkfile(document.getElementById('fileAuthorization'))"
这应该在Form标签本身中调用:
<% using (Html.BeginForm("AcceptFile", "Authorization", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "javascript:return checkfile(document.getElementById('fileAuthorization'))" }))
{%>
但早些时候它被称为提交按钮Onclick
<input type="submit" id="btnSave" name="btnSave" value="Upload" onclick="javascript:return checkfile(document.getElementById('fileAuthorization'))" />
我已经更正并且已经工作了(验证和文件上传用于提交按钮Onclick和文件上传控件onchange)。
但我的问题是为什么return false
没有处理提交按钮点击?但它正在为Fileupload onchange事件工作。
为什么重定向发生了。?在将相同的Line更改为MVC Form后,它的工作(重定向现在没有发生)为什么。?
答案 1 :(得分:0)
将提交更改为:
<button type="button" id="btnSave" name="btnSave" onclick="checkfile(document.getElementById('fileAuthorization'))" ></button>
它不会自动提交表格
当您准备好提交表单时,您可以使用回调函数中的javascript来执行此操作:
document.getElementById('form-id').submit();