我有这样的事情:
我正在使用Ajax.BeginForm,它的updatetargetid是一个div,它基本上告知用户是否成功提交了问题,如果有的话。 处理表单提交的我的控制器函数检查是否存在重复条目等错误,并重新检查客户端规则并相应地返回Content(....)。
这是我之后用来清除表单的内容,但正如您可以看到,即使我的控制器功能检测到客户端没有发现某些问题,表单仍然会被清除。我设置了AjaxOptions OnComplete = "onComplete"
。
function onComplete() {
if ($("#myForm").validate().form()) {
$("#myForm").clearForm();
}
}
答案 0 :(得分:0)
那么问题是什么?当服务器端出错时,您根本不会调用onComplete函数。但是显示一条错误消息,让用户知道没有任何事情会发生,因为存在服务器端错误。这样,表格就不会被清除。 如果一切都在服务器端工作,那么只有这样才能调用onComplete函数。
<强> PK 强>
答案 1 :(得分:0)
使用函数onComplete(ajaxContext){}而不是函数onComplete(){}
从服务器端,如果存在模型验证错误,通常表示验证摘要(如果支持)包含一些错误消息。使用ajaxContext,您可以读取作为ajax调用的一部分返回的响应,并检查验证摘要元素的值。
其他选择是在您的控制器和视图之间设计策略 - 例如指定错误指示符作为响应标头的一部分,并使用它来决定是否在OnComplete处理程序中清除表单。