2009-06-04 31 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