考虑一个模型类
public class MyModel
{
public string Id { get; set; }
/* some other properties */
}
和一个控制器
public class MyController
{
[HttpPut]
public ActionResult Update(string id, MyModel model)
{
/* process */
}
}
路由注册如下:
protected override void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("MyController",
"api/my/{id}",
new { action = "Update", controller = "My"},
new { httpMethod = new HttpMethodConstraint(new[] { "PUT" }) });
}
当使用 REST 客户端并将 MyModel 序列化为 JSON 或 XML 请求发送到此控制器时,“MyModel”的空“Id”属性会覆盖操作方法的“id”参数,即使您将其发布到http:/ /api.example.com/api/my/10。
如何强制 ASP.NET MVC 3 从 URL 填充“id”属性(在本例中为“10”)并忽略“MyModel”的“Id”属性?
请注意,我没有使用 ASP.NET Web API。