Jquery ASP.Net MVC3:未触发远程验证调用

Jquery ASP.Net MVC3:未触发远程验证调用,jquery,asp.net-mvc-3,remote-validation,Jquery,Asp.net Mvc 3,Remote Validation,我有一个数据输入表单,它设置了远程验证来检查数据库中某个字段的现有值 下面是发生的情况: 转到创建页面(数据输入表单)。为字段输入值X 场失去焦点。调用远程验证。费德勒显示呼叫 单击保存。保存记录;页面切换到索引页面 再次转到创建页面。再次为字段输入值Y 场失去焦点。调用远程验证(每个Fiddler) 单击保存。保存记录;页面切换到索引页面 再次转到“创建页面”,并为字段输入X(再次) 场失去焦点。什么也没发生。不调用远程验证(每个Fiddler) 单击保存。不调用远程验证。页面

我有一个数据输入表单,它设置了远程验证来检查数据库中某个字段的现有值

下面是发生的情况:

  • 转到创建页面(数据输入表单)。为字段输入值X

  • 场失去焦点。调用远程验证。费德勒显示呼叫

  • 单击保存。保存记录;页面切换到索引页面

  • 再次转到创建页面。再次为字段输入值Y

  • 场失去焦点。调用远程验证(每个Fiddler)

  • 单击保存。保存记录;页面切换到索引页面

  • 再次转到“创建页面”,并为字段输入X(再次)

  • 场失去焦点。什么也没发生。不调用远程验证(每个Fiddler)

  • 单击保存。不调用远程验证。页面试图保存记录,但数据库将其吐回

  • 这就好像创建页面记住了字段的前一个值也是X,并且没有重新验证它,因为它没有改变,即使我同时访问了其他页面

    我没有将模型传递给Create视图:我无法想象它从何处得到这样的想法,即该字段有一个正在(或没有)更改的先前值


    据我所知,
    OutputCache
    没有被使用。如果重要的话,我正在使用IE 8。

    好的,我想我已经解决了。不仅仅是不能使用OutputCache来缓存结果,还必须明确地说不要缓存验证结果。有关说明和示例,请参见


    ETA:另一种可能发生的情况是,如果第一次远程验证调用失败(如中所示,返回500错误),它将不会再次被调用。因此,如果您预计验证例程会不时被调用空数据(因为您的字段尚未填写),则需要将参数设置为空,并在验证代码中说明这一点。

    如果您找到了问题的解决方案,您应该添加自己的解决方案作为答案,并在延迟过后接受它。