问题:此代码未触发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>
答案 0 :(得分:10)
此代码未触发StartValidation函数。为什么呢?
因为您似乎订阅了提交按钮的click事件,这是您绝对不需要的。
您只需要引用jquery.unobtrsuive-ajax.js脚本以便AJAX化这些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,那么您可以依赖它。