2010-09-21 72 views
1

我正在使用ajax窗體嘗試使用Create方法回發CustomerController。下面是代碼Ajax.BeginForm MVC2中的錯誤?用於發佈到錯誤控制器的Ajax?

<% 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"> ... 

正如你所看到的形式實際上是被張貼到/職位/創建的不是/客戶/創建

我不知道爲什麼會發生這種情況。有任何想法嗎?

回答

0

是否有可能在Global.asax中將「\ Job」請求映射到「CustomerController」?如果是這樣,MVC中的路由引擎將返回「\ Job」作爲URL以保持URL一致。

的路線將是這個樣子:

 routes.MapRoute("Name", "Job/Create", new { controller = "Customer", action = "Create" }); 
4

我猜,框架都採取不恰當的方法。 也許這:

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有對象類型和 「客戶」 - 字符串,一切都OK了C#編譯器,但不適合你。

試着寫:

(Ajax.BeginForm("Create", "Customer", null, 
new AjaxOptions { LoadingElementId = "saving"} 
new { @class = "block_content form" })) 
+0

非常感謝葉夫根尼·Senetskiy。 – 2014-04-09 16:23:21