清除ajax.beginform但是如果服务器端不希望清除表单怎么办?

时间:2010-10-06 22:38:01

标签: asp.net-mvc

我有这样的事情:

我正在使用Ajax.BeginForm,它的updatetargetid是一个div,它基本上告知用户是否成功提交了问题,如果有的话。 处理表单提交的我的控制器函数检查是否存在重复条目等错误,并重新检查客户端规则并相应地返回Content(....)。

这是我之后用来清除表单的内容,但正如您可以看到,即使我的控制器功能检测到客户端没有发现某些问题,表单仍然会被清除。我设置了AjaxOptions OnComplete = "onComplete"

function onComplete() {
        if ($("#myForm").validate().form()) {
            $("#myForm").clearForm();
        }
    } 

2 个答案:

答案 0 :(得分:0)

那么问题是什么?当服务器端出错时,您根本不会调用onComplete函数。但是显示一条错误消息,让用户知道没有任何事情会发生,因为存在服务器端错误。这样,表格就不会被清除。 如果一切都在服务器端工作,那么只有这样才能调用onComplete函数。

<强> PK

答案 1 :(得分:0)

使用函数onComplete(ajaxContext){}而不是函数onComplete(){}

从服务器端,如果存在模型验证错误,通常表示验证摘要(如果支持)包含一些错误消息。使用ajaxContext,您可以读取作为ajax调用的一部分返回的响应,并检查验证摘要元素的值。

其他选择是在您的控制器和视图之间设计策略 - 例如指定错误指示符作为响应标头的一部分,并使用它来决定是否在OnComplete处理程序中清除表单。