0

我有一个带有几个输入框的简单 html 表单。当我点击保存时,它找到了正确的方法,但数据很奇怪。当我的表单字段名称与路由中的字段名称相同时,传入的值是我的表单字段数据,而不是路由数据。

例如。

想象一下你有以下路线。

// 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? 好吧,参数数据来自表单,而不是路由。

我不确定如何确保参数数据是路由数据?

对我来说,唯一的解决方法是重命名路由变量,从displayNametorouteDisplayName或其他什么..?

4

1 回答 1

1

ModelBinding 约定规定参数从以下位置填充:

  • 一个 request.form 值(如果存在)(你的有!)
  • 然后,RouteData.Values
  • 然后 request.querystring
  • 然后为空

您必须 (a) 覆盖此默认行为或 (b) 重命名您的路由值。

我会和b一起去。

麦克风

于 2009-06-04T14:20:00.580 回答