背景
在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}
);
问题:
BindAttribute
是System.Web.Mvc
类。 Web Api中是否存在等效的(参数绑定)?
当然,如果有其他解决方案可以达到相同的效果,我很乐意听到它们!
答案 0 :(得分:5)
您可以使用System.Web.Http.FromUriAttribute
属性指定用于模型绑定的参数名称。
public ActionResult ActionName(
[FromUri(Name = "principalID.userID")] int userID,
[FromUri(Name= "dependentID.applicationID")] long applicationID
)
FromUri
告诉模型绑定检查查询字符串和请求的RouteData
。
答案 1 :(得分:-2)
据我所知,在WebAPI中你只使用特殊的控制器类库和特殊的Action名称,但它们仍然是控制器和动作。
你尝试过它并没有用吗?快速浏览一下这篇文章似乎建议模型绑定一般(不是特定的属性)应该正常工作:
http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx
修改强>
有人说这应该仅适用于MVC而且还有助于回答。在这里,更多参考资料: