我有一个mvc视图,其中包含一个项目列表。使用局部视图显示每个项目。用户可以编辑,添加和删除列表中的项目。所有这一切都有效。
但是,如果用户添加项目,则在刷新页面之前无法编辑该项目。当用户选择提交按钮时,不会发生帖子。 Chrome开发工具中没有显示任何网络活动 - 没有任何反应。
输出html与初始页面加载中包含的项目和通过ajax添加的项目相同。
<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"}))
{
有什么想法吗?
编辑:需要注意的事项 - 此表单放在td标记上方的tr标记内,这可能会导致问题,因为这是无效标记 - 但是,除了通过ajax调用添加的项目之外,它在所有情况下都有效。
答案 0 :(得分:0)
<script>
标记被剥离,并且由于Ajax.BeginForm
将脚本标记添加到HTML以启用它的功能,因此您最终会得到一个不执行任何操作的常规旧表单。由于浏览器出于安全原因剥离<script>
标记,因此您无法做到这一点。您唯一的办法是停止使用Ajax.BeginForm
并编写自己的JS来处理AJAX提交,然后您可以将其包含在主视图中或不受影响的外部文件中,这无论如何都不是一个坏主意。由于这样的原因,Ajax.*
助手系列糟糕。