2009-06-04 33 views
0

我有一個簡單的html表單,有幾個輸入框。當我點擊保存時,它會找到正確的方法,但數據很奇怪。當我有一個表單字段名稱與路由中的字段名稱相同時,傳入的值是我的表單字段數據,而不是路由數據。例如發佈到ASP.NET MVC動作時出現奇怪的問題

想象一下,你有以下路線。

// Both Get/Post 
routes.MapRoute(
    "User-Edit", 
    "user/{displayName}/edit", 
    new { controller = "Account", action = "edit" }); 

,按照下述方式...

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit([Bind(Exclude = "UserId")]string displayName, 
           FormCollection formValues) 

{...}

現在,請注意如何路由具有可變displayName和控制器的動作也有一個說法叫displayName ?那麼,參數數據是來自表單的,而不是路由。

我不知道如何確保參數數據是路由數據?

是我在這裏唯一修復重命名路由變量,從displayNamerouteDisplayName或任何..?

回答

1

的ModelBinding公約規定的參數填充來自:

  • 如果存在,它(!你呢)
  • 然後,RouteData.Values
  • 一個的Request.Form值,然後的Request.QueryString
  • 然後空

你將不得不(一)覆蓋此默認行爲,或(b)重命名路線值。

我會去b。

Mike

+0

El wikid :) cheers mate。 – 2009-06-04 14:23:02