12

背景:

在 MVC3 中,我使用以下语法来指定自定义Action参数名称:

public ActionResult ActionName([Bind(Prefix = "principalID")] int userID,
                               [Bind(Prefix = "dependentID")] long applicationID)

此操作的路线定义如下(ActionNameConstraint是自定义的IRouteConstraint):

routes.MapHttpRoute(
    "DependantAction",
    "{controller}/{principalID}/{action}/{dependentID}",
    new {controller = @"[^0-9]+", action = ActionNameConstraint.Instance, dependentID = RouteParameter.Optional}
    );

问题:

BindAttributeSystem.Web.Mvc类。Web Api 中是否有等效的 this(参数绑定)?

当然,如果有其他解决方案可以达到相同的结果,我很想听听!

4

2 回答 2

5

您可以使用该System.Web.Http.FromUriAttribute属性来指定用于模型绑定的参数名称。

public ActionResult ActionName(
                    [FromUri(Name = "principalID.userID")] int userID,
                    [FromUri(Name= "dependentID.applicationID")] long applicationID
                    )

FromUri告诉模型绑定检查查询字符串和RouteData请求。

于 2013-08-17T10:45:36.543 回答
-2

我知道在 WebAPI 中您只使用特殊的控制器类基和特殊的动作名称,但毕竟它们是控制器和动作。

你试过了吗,它没有用?快速浏览一下这篇文章似乎表明模型绑定通常(不是特定属性)应该正常工作:

http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

编辑:

有人说这应该只与 MVC 一起工作,并否决了答案。给你,更多参考:

于 2012-04-27T00:09:08.743 回答