使用ASP.NET MVC中的jQuery Forms上载文件验证

时间:2009-09-29 15:02:38

标签: javascript jquery asp.net-mvc

我正在研究一些ASP.NET MVC代码,它使用jQuery Forms插件来允许用户上传文件。

表格:

<% using (Html.BeginForm("SaveAttachments", "Data", FormMethod.Post, new { enctype = "multipart/form-data", id="SaveAttachments" })) {%>   
        <input type="file" name="consentform" size=30/>
     <input type="file" name="infosheet" size=30/>     
     <input type="file" name="approval" size=30 />         
<%} %>

使用带有Form插件的jQuery提交表单:

$('#SaveAttachments").ajaxSubmit({
                    success: function(html, status) {
                        $("#response").append(html);
                    }
});

它由控制器操作名称SaveAttachments:

处理
public ActionResult SaveAttachments(HttpPostedFileBase consentform, HttpPostedFileBase infosheet, HttpPostedFileBase approval)
        {
            string message = SaveFiles(consentform, infosheet, approval)
            return Content(message);
        }  

这种方法很有效,除非出现阻止控制器操作被调用的错误;特别是当文件大小太大并且抛出HttpException“超出最大请求长度”时。

我需要的是一种在发生此类错误时用适当的消息更新用户的方法。

我考虑过以下事项:

  1. 尝试使用Forms插件 在ajaxSubmit()中检测并处理这个 - 这个 似乎不可能。
  2. 添加一些客户端验证 要上传的文件 - 不使用 Flash或ActiveX,我找不到办法 检查IE和FF中的文件大小等。
  3. 处理由Controller.Execute()方法抛出的HttpException,和 与此沟通 SaveAttachments()动作 - 我当时 考虑压倒一切 controller.Execute()方法允许 此。
  4. 实现必要验证的最佳方法是什么,如果没有干净的方法是处理异常可接受的解决方法?

    感谢。

    修改

    我已经减少到两个选项:

    1. 使用Flash / ActiveX / Silverlight 更多功能的文件上传表单。
    2. 找到一种方法来引导文本 内容长度超出异常 处理程序来显示 表格中的状态。正如文件上传表格一样 使用iFrame提交我不是 我当然可以这样做..

1 个答案:

答案 0 :(得分:0)

你不能只使用jQuery的ajaxError函数吗? http://docs.jquery.com/Ajax/ajaxError#callback

此外,您可能希望更具体地了解您使用的是哪个插件。 ajaxSubmit()不是核心jquery。