繁体   English   中英

MVC2中的Ajax.BeginForm错误? Ajax发布到错误的控制器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM