发布到ASP.NET MVC操作时出现奇怪的问题

时间:2009-06-04 13:57:23

标签: asp.net-mvc routes

我有一个带有几个输入框的简单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的参数?嗯,参数数据是来自表格的,而不是路线。

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

这是我唯一的解决方案,我可以重命名路线变量,从displayNamerouteDisplayName或其他什么..?

1 个答案:

答案 0 :(得分:1)

ModelBinding约定规定参数填充自:

  • request.form值(如果存在)(你的!)
  • 然后,RouteData.Values
  • 然后是request.querystring
  • 然后null

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

我会选择b。

麦克