我正在寻找如下开发一个api方法
POST /dinner/dinnerId/应用程序
这与 POST /application 相同(类似于此处的 POST 请求)
我定义了一条路线,以便 /dinner/dinnerId/application 去 /application
routes.MapHttpRoute(
name:"DinnerApplicationApi",
routeTemplate: "api/dinner/{dinnerId}/{controller}"
);
在我的 ApplicationController (这是一个 api 控制器)
[ModelValidationFilter]
public HttpResponseMessage Post([FromBody]ApplicationApiModel application, int dinnerId)
{
//this will work when invoked from route /dinner/dinnerId/application and without ModelValidationFilter
application.dinnerId = dinnerId;
if (123456 == application.dinnerId)
return new HttpResponseMessage(HttpStatusCode.OK);
else
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
现在,在第一条路线的情况下,我应该根据路线中的值设置晚餐 ID。但在第二种情况下,晚餐 ID 将从正文中设置。如何在 WebApi 中实现这一点?如上所示,我正在从路线设置晚餐ID。但是当我放置 ModelValidationFilter 时,请求失败,因为 DinnerId 是 ApplicationApiModel 中的必填字段。
public class ApplicationApiModel
{
[Required]
public int DinnerId { get; set; }
[Required]
public AttendeeApiModel Attendee { get; set; }
public string Message { get; set; }
public string Password { get; set; }
}
所以基本上,我希望能够同时使用这两条路线并让我的 ModelValidation 条件也通过。