4

问题:此代码未触发StartValidation function. 为什么?

<html>
<head>
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#frmUp').find("input[type = 'submit']").click(function () {
                $('#frmUp').submit();
            });
        });
        function StartValidation() {
            return true;
        }
    </script>
</head>
<body>
    <div>
        @using (Ajax.BeginForm("UploadRequestFile", "FileUpload", new AjaxOptions
            {
                HttpMethod = "POST",
                OnBegin = "return StartValidation();"
            }, new { id = "frmUp" }))
        {
            <input type="submit" name="Submit" value="Submit" />
        }
    </div>
</body>
</html>

运行时标记

<form method="post" id="frmUp" data-ajax-method="POST" 
      data-ajax-begin="return StartValidation();" data-ajax="true" 
      action="/fileupload/UploadRequestFile?Length=10">            
      <input type="submit" value="Submit" name="Submit">
</form>
4

1 回答 1

12

此代码未触发 StartValidation 函数。为什么?

因为您似乎已经订阅了提交按钮的点击事件,您绝对不需要。

您只需要引用 jquery.unobtrsuive-ajax.js 脚本来 AJAXify 那些 Ajax.* 助手:

<html>
<head>
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquer.unobtrusive-ajax.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function StartValidation() {
            return true;
        }
    </script>
</head>
<body>
    <div>
        @using (Ajax.BeginForm("UploadRequestFile", "FileUpload", new AjaxOptions
            {
                HttpMethod = "POST",
                OnBegin = "return StartValidation();"
            }, new { id = "frmUp" }))
        {
            <input type="submit" name="Submit" value="Submit" />
        }
    </div>
</body>
</html>

您无疑会注意到我是如何添加对jquery.unobtrusive-ajax.min.js脚本的引用以使这些 Ajax.* 助手执行您希望他们执行的操作。

我对您的代码的另一个评论是,您似乎正在尝试调用控制器上命名UploadRequestFile的操作。FileUpload鉴于这些名称,我可以安全地假设您正在尝试将文件上传到服务器(只是您没有在问题中显示或提及)。在您生气之前,让我快速告诉您,您无法使用 AJAX 上传文件。您可以使用一些插件,例如 Uploadify 或 BlueImp File Upload,或者如果您的客户端浏览器支持 HTML5 File API,那么您可以依赖它。

于 2013-06-25T20:32:30.703 回答