2

我正在寻找如下开发一个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 条件也通过。

4

0 回答 0