提交按钮不会触发通过ajax添加的项目
本文关键字:ajax 添加 项目 按钮 提交 | 更新日期: 2023-09-27 18:11:23
我有一个mvc视图,其中包含一个项目列表。每个项使用分部视图显示。用户可以编辑、添加和删除列表中的项目。
但是,如果用户添加了一个项目,则在刷新页面之前无法编辑该项目。当用户选择提交按钮时,发布不会发生。Chrome开发工具中没有显示网络活动-什么也没发生。
对于初始页面加载中包含的项目和通过ajax添加的项目,输出的html是相同的。
<form action="/booking/UpdateRoomFlow" data-ajax="true" data-ajax-method="POST" data-ajax-success="update_27365547" id="roomflowform_27365547" method="post" novalidate="novalidate"></form>
我注意到,当我在chrome中检查元素时,表单不包装表单字段,但当我查看视图源时,它会。
我试过使用Ajax。BeginForm和我都试过自己写html,结果都是一样的。
这是Ajax.BeginForm…
@using (Ajax.BeginForm(
"UpdateRoomFlow",null,
new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = targetfunction
},
new { @id = @formid, @novalidate = "novalidate"}))
{
任何想法?
编辑:需要注意的是-这个表单被放置在一个tr标签之上的td标签,这可能会导致一个问题,因为这是无效的标记-然而,它在所有情况下工作,除了通过ajax调用添加的项目。
HTML AJAX响应中包含的<script>
标记被剥离,并且由于Ajax.BeginForm
将脚本标记添加到HTML中以启用其功能,因此您基本上会得到一个什么都不做的常规旧表单。对此你无能为力,因为浏览器出于安全原因会剥离<script>
标签。您唯一的办法是停止使用Ajax.BeginForm
并编写自己的JS来处理AJAX提交,然后您可以将其包含在主视图或不受影响的外部文件中,这无论如何都不是一个坏主意。Ajax.*
帮助者家庭很糟糕就是因为这样的原因。