所以我一直在玩防伪令牌,making progress感谢你们。
我已经想出了一个解决方案来合并表单值,并让我的ActionMethods不在AntiForgery令牌上吐……不幸的是,我在这个过程中破坏了验证。AJAX post在客户端验证/客户端验证被忽略之前触发。服务器端工作,但是我会在post之前挖掘一些验证。这是我正在使用的代码。
$(document).ready(function () {
$('input[type=submit]').live("click", function (event) {
event.preventDefault();
// Form with the AntiForgeryToken in it
var _tokenForm = $(this).parents().find("#__AjaxAntiForgeryForm");
// Current Form we are using
var _currentForm = $(this).closest('form');
// Element to update passed in from AjaxOptions
var _updateElement = $(_currentForm).attr("data-ajax-update");
// Serialize the array
var arr = $(_currentForm).serializeArray();
//Merge TokenForm with the CurrentForm
$.merge(arr, $(_tokenForm).serializeArray());
// The AJAX Form Post stuff
$.ajax({
type: "POST",
url: $(_currentForm).attr('action'),
data: arr,
success: function (data) {
$(_updateElement).html(data);
}
});
return false;
});});
所以我在想,我需要在$.ajax之前以某种方式处理客户端验证…任何建议都可能为我节省一些时间。
发布于 2011-09-02 00:05:40
将其称为:
var formValid = $("#FormId").validate().form();
if (!formValid) return false;添加到您的代码中:
$(document).ready(function () {
$('input[type=submit]').live("click", function (event) {
event.preventDefault();
// Form with the AntiForgeryToken in it
var _tokenForm = $(this).parents().find("#__AjaxAntiForgeryForm");
// Current Form we are using
var _currentForm = $(this).closest('form');
var isValid = $(_currentForm).validate().form();
if (!isValid) return false;
// Element to update passed in from AjaxOptions
var _updateElement = $(_currentForm).attr("data-ajax-update");
// Serialize the array
var arr = $(_currentForm).serializeArray();
//Merge TokenForm with the CurrentForm
$.merge(arr, $(_tokenForm).serializeArray());
// The AJAX Form Post stuff
$.ajax({
type: "POST",
url: $(_currentForm).attr('action'),
data: arr,
success: function (data) {
$(_updateElement).html(data);
}
});
return false;
});
});https://stackoverflow.com/questions/7272232
复制相似问题