【问题标题】:Weird problem when Posting to an ASP.NET MVC action发布到 ASP.NET MVC 操作时出现奇怪的问题
【发布时间】:2009-06-04 13:57:22
【问题描述】:

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

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

对我来说,将路由变量从 displayName 重命名为 routeDisplayName 或其他什么的唯一解决方法是……?

【问题讨论】:

    标签: asp.net-mvc routes


    【解决方案1】:

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

    • request.form 值(如果存在)(您的存在!)
    • 那么,RouteData.Values
    • 然后request.querystring
    • 然后为空

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

    我会和 b 一起去。

    迈克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多