[英]Ajax.BeginForm Bug in MVC2?? Ajax for Posting to Wrong Controller?
我正在使用ajax表单尝试使用Create方法回发CustomerController。 这是代码
<% using (Ajax.BeginForm("Create", "Customer", new AjaxOptions { LoadingElementId = "saving"}, new { @class = "block_content form" }))
{%>...
当我的html表单呈现时,表单看起来像这样
<form onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, loadingElementId: 'saving', onComplete: Function.createDelegate(this, $j('#accoutcreate').dialog('close')) });" onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));" method="post" class="block_content form" action="/Job/Create?Length=3"> ...
如您所见,表单实际上是发布到/ Job / Create而不是/ Customer / Create的
我不确定为什么会这样。 有任何想法吗?
我猜想,框架没有采取适当的方法。 也许这样:
public static MvcForm BeginForm(this AjaxHelper ajaxHelper,
string actionName, object routeValues, AjaxOptions ajaxOptions,
object htmlAttributes);
并且您提供了:
"Create" - actionName, "Customer" - routeValues, new AjaxOptions(..) - ajaxOptions, new { @class = "block_content form" }
- htmlAttributes.
注意, routeValues
具有对象类型和“客户”-字符串,对于C#编译器来说一切正常,但对您而言不是。
尝试写:
(Ajax.BeginForm("Create", "Customer", null,
new AjaxOptions { LoadingElementId = "saving"}
new { @class = "block_content form" }))
是否有可能在Global.asax中设置了将“ \\ Job”请求映射到“ CustomerController”的路由设置? 如果是这样,MVC中的路由引擎将返回“ \\ Job”作为URL,以保持URL的一致性。
路线如下所示:
routes.MapRoute("Name", "Job/Create", new { controller = "Customer", action = "Create" });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.