我在MVC2中有部分视图:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<div class="uploader">
<form action="/media/uploader" method="post" enctype="multipart/form-data">
<input id="File1" type="file" name="upfile" />
<input type="submit" value="Upload" />
</form>
</div>
enter code here
我不知道下一步该怎么做:
用户按下提交按钮后,我想验证上传文件的扩展名。如果扩展名有效,我会发布上传的文件,但如果没有支持扩展名,我想以某种方式警告用户(弹出窗口?)并中止提交。我用jquery尝试了一些东西,但我不太了解它,所以我不能让它工作。
感谢您的任何建议。
答案 0 :(得分:1)
您可以使用允许您执行此操作的Ajax Upload plugin。
答案 1 :(得分:1)
我不是MVC的人,但我知道你有两个选项可以在严格的JS / FORMS视角下工作......
表单有一个事件 - onsubmit - 如果你有一个对onsubmit事件返回false的事件处理程序,则不会发生提交。同样,如果您在提交按钮的onclick事件上有一个事件处理程序,则返回false将取消单击,因此也会取消表单发布。
以下是依赖表单的onsubmit:
的示例<form action="/myDir/myPage.ext" method="post" onsubmit="return validForm(window.event);">
....
</form>
如果实现方法validForm,它可能类似于:
function validForm(e) {
var fullPath = document.getElementById('File1').value;
if (validateFileExtension(fullPath)) {
return true;
} else {
alert('Invalid extension for this file!');
return false;
}
}
function validateFileExtension(fullPath) {
var isValid = false;
// some logic to parse and validate extension
// if the logic passes, we set isValid to true.
return isValid;
}
完全实现上述方法后,您的两个选项是在提交按钮的onclick事件或表单的onsubmit事件中使用该方法。无论哪种方式,您都需要检查文件输入的值,确保扩展名是您想要的,如果扩展名违反了您的业务规则,则返回false。如果返回true,则按钮单击/表单提交将继续。如果您返回false,表单提交或按钮单击(取决于您连接到哪个事件)将取消 - 无论哪种方式,相同的结果 - 没有表单提交没有你想要的文件字段。
快乐的编码。
乙