为什么Ajax.BeginForm不能在Chrome中运行?

我正在使用c#.NET MVC2,我正在尝试创建一个调用删除数据库记录(RemoveRelation)的方法的ajax表单。 删除记录的过程按预期工作。 删除记录后,表单应调用一个javascript函数,从视觉中删除记录(RemoveRelation(10))。 这是通过一个AJAX调用完成的,在Internet Explorer 9和Firefox 4上都按预期工作,但是由于某些原因,更新没有通过AJAX调用发生,并且整个页面在删除记录的表单时正在刷新提交(这是不正确的,因为表单应该是使用AJAXfunction生成的)。 这是我生成表单的代码:

 

另外在Chrome上我还有一个单独的Ajax.BeginForm问题。

  

上面的Begin Form代码用于将关系添加到列表而不是删除它们。 我再次强调,在IE9和FF4上,上面的工作正常,在Chrome上而不是添加一个并通过ajax更新,而是添加记录两次,再次刷新整个页面而不是进行ajax更新。

为什么这会在Chrome中崩溃?

Microsoft AJAX和某些webkit浏览器存在问题。 我不久前遇到过这个问题,修复非常简单。 创建一个webkit.js文件并将其放在内容中:

 Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit if( navigator.userAgent.indexOf( 'WebKit/' ) > -1 ) { Sys.Browser.agent = Sys.Browser.WebKit; Sys.Browser.version = parseFloat( navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]); Sys.Browser.name = 'WebKit'; } 

然后在ScriptManager中或页面中的某个位置(最好是在母版页中,我将其添加到最后),添加脚本参考:

    //OR  

不记得我找到信息的原始网站,但我能从这个页面获得。 祝好运!

您可以更新您的项目以使用asp.net MVC 3,在mvc 3中,jquery ajax是默认值

我找到了解决这个问题的奇怪方法。 我通过’a’标签调用ajax表单提交,如下所示:

 Remove 

出于某种原因,从’a’标签调用’.submit()’会导致整个页面刷新而不是ajax调用。 我通过使用以下代码修复了该问题:

  

当我需要在输入中添加javascript命令以在删除之前请求确认时,此解决方案也有效。 唯一的抱怨是我需要交换一些标记以确保我的按钮在他们提交的表单中发生(我理解的并不总是在所有情况下都可能)。