我有一个Razor视图,其中包含使用Html.BeginForm的普通表单。它还使用Html.RenderAction插入包含另一个表单的局部视图。我使用RenderAction,因此部分视图可以使用它自己的模型进行强类型化。该部分视图包含使用Ajax.BeginForm的 当父视图中的常规表单发布并且具有从控制器方法返回的验证错误时,我发生了这个问题。 ajax表单也会验证并显示自己的错误消息。起初我认为只是客户端验证拾取两种形式,但是当我设置断点时,我发现ajax表单发布的控制器方法也被调用。 我更希望保持这种观点简单,不要对两种形式使用ajax。出于同样的原因,我宁愿不将表单合并为一个,并使用javascript或其他方法来区分这两者。在常规表单发布时,我的其他选择是保持ajax表单不发布或验证?
答案 0 :(得分:0)
我对@StephenMuecke的评论最终触发了正确的关键词来谷歌的想法。当然,答案已经在StackOverflow上了。请参阅Html.RenderAction uses Post instead of Get或How can I get Html.RenderAction to call the Get method on a Post?。 @ AndrewBarber在第二个链接上的答案是一个很好的答案。在我为ajax表示不同名称的GET和POST操作方法并从GET操作方法中删除[HttpGet]以允许使用GET或POST调用它们之后,两个表单都按预期工作。