“提交”按钮不适用于动态局部视图中呈现的ajax表单

时间:2009-04-18 06:48:50

标签: asp.net-mvc asp.net-ajax

我有一些jQuery加载局部视图并将其插入DOM。到目前为止,一切都很好。

但是现在我对渲染的用户控件进行了一些更改,以包含Ajax表单。但是,此表单的提交按钮似乎不会触发Ajax调用。据我所知,它根本没有做任何事情。我在控制器中的断点也没有被触发。

如果我使用链接并添加onclick =“submit()”,表单将被提交,并在我的控制器中触发操作,但当然,这是一个简单的帖子而不是ajax帖子。

表格如下:

<% using(Ajax.BeginForm("actionName", new AjaxOptions {
           OnSuccess = "updatePanel" })) { %>
  <!-- form elements in here -->
  <input type="submit" />
<% } %>

如果我将OnSuccess更改为OnComplete,我刚刚发现它会发布帖子,我完全不明白。

但是,即使将其更改为OnComplete也是有效的,我在microsoft ajax库中得到一个例外,在某处:

try {
  a._webRequest.completed(Sys.EventArgs.Empty)
} finally {
  if (a._xmlHttpRequest!=null) {
    a._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
    a._xmlHttpRequest = null
  }
}

光标在最后的末尾突出显示,表示Object不是这个属性或方法。

我想我可以忍受那个;当它在MicrosoftAjax.js中抛出异常并在VS中篡改调试器时,它只是讨厌测试的东西。

2 个答案:

答案 0 :(得分:0)

如果您正在使用OnSuccess,那么您是否还需要具有UpdateTarget,这就是为什么它首先没有被解雇?

答案 1 :(得分:0)

您确定要引用Microsoft AJAX JS文件吗?

你需要确保你有......

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>

您网站的某个地方。默认情况下,我不认为ASP.NET MVC项目会添加这些JS引用。