提交弹出对话框

时间:2011-07-25 13:38:45

标签: javascript jquery asp.net asp.net-mvc-2

我在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尝试了一些东西,但我不太了解它,所以我不能让它工作。

感谢您的任何建议。

2 个答案:

答案 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,表单提交或按钮单击(取决于您连接到哪个事件)将取消 - 无论哪种方式,相同的结果 - 没有表单提交没有你想要的文件字段。

快乐的编码。