Asp.net mvc 动态生成的Ajax.BeginForm

Asp.net mvc 动态生成的Ajax.BeginForm,asp.net-mvc,ajax,ajax.beginform,Asp.net Mvc,Ajax,Ajax.beginform,我对ASP.NET MVC Ajax表单有问题。我在一个表中生成了几个Ajax表单,如下所示: <% foreach (var item in Model) { var statefulItem = item as StatefulEffectiveItem; %> <tr> <td> <% using (Ajax.BeginForm("ShowAddActivity"

我对ASP.NET MVC Ajax表单有问题。我在一个表中生成了几个Ajax表单,如下所示:

<% 
foreach (var item in Model)
       {
           var statefulItem = item as StatefulEffectiveItem; %>
    <tr>
        <td>
            <% using (Ajax.BeginForm("ShowAddActivity", "EffectiveItems", new { id = item.Id }, new AjaxOptions() { UpdateTargetId = "details", OnSuccess = "dialogIt" }))
               { %>
            <input type="submit" name="activity" value="Add Activity" />
            <% } %>
        </td>
    </tr>
    <% } %>

到目前为止还不错。当我发布其中一个表单时,它在一个div中呈现一个局部视图,这个新的局部视图包含一个新的Ajax.BeginForm(它没有嵌套在原始表单中)。第二个Ajax.BeginForm与我在表中生成的内容非常相似,但是当我发布它时,我不会得到“Ajax post”,而是一篇普通的文章,它会将我发送到一个新页面。我不明白是什么原因导致这两个Ajax表单之间的差异,为什么这个“动态生成”的Ajax表单表现得像一个普通的html表单

顺便说一句,我知道我可以用Javascript以不同的方式来实现这一点,但我想了解一下,仅仅使用MVC助手和Ajax库是否可以实现这一点,如果答案是“是”,那么我错在哪里

多谢各位


Wasp

我不知道是否可以用MS AJAX来完成,但我可以告诉你出了什么问题。在第一个ajax上更新部分后,此更新的部分包含为新表单注册ajax的javascript。此javascript未执行,因为没有任何命令它执行。您必须调用一个javascript函数,在第一个ajax请求的成功回调中为第二个表单注册ajax。

编辑/scripts/jquery.unobtrusive-ajax.js文件

改变

$("a[data-ajax=true]").on("click", function (evt) { ..... }

对文件中的所有其他事件注册执行此操作

$(document).on("click","form[data-ajax=true] input[type=image]"
$(document).on("click","form[data-ajax=true] :submit"
$(document).on("submit","form[data-ajax=true]", 

这样,您就可以将事件注册到文档中,从而允许对动态添加的元素进行事件处理。jQuery以前使用过“.live()”,但现在可以通过使用“.on()”方法将事件处理程序添加到文档中来实现这一点。

是否检查了页面的HTMl源代码?两个标记之间是否有任何差异?绝对没有,生成的html/javascript代码绝对等效…谢谢,我怀疑有类似的情况,但我不知道应该调用什么,我没有找到任何相关信息。谢谢:)@Darin Dimitrov,你能指出一篇文章或一段代码来注册ajax吗?
$(document).on("click","form[data-ajax=true] input[type=image]"
$(document).on("click","form[data-ajax=true] :submit"
$(document).on("submit","form[data-ajax=true]",