0

I'm trying to make a api like the OPENBANKPROJECT. Such as /api/banks/{BANK_ID}/atms/{ATM_ID} etc. I guess banks and atm is a different controller

I want get a global (api/Claim/{id}/Detail/[action] i need this {id}) parameter before before [action] initialize (maybe in constructor).

How do i get this {id} before [action] initialize?

    [Route("api/Claim/{id}/Detail/[action]")]
    public class ClaimDetailController
    {
        int _id; // assignment {id} 
        public ClaimDetailController(IClaimDetailService claimDetailService)
        {
           `Need Query Id before execute action`
        }
        [HttpPost]
        public async Task<BaseResponse> ClaimDetailInfoPolicy(ClaimDetailKeyModel model)
        {
            return `codes with _id`;
        }
    }

    public class ClaimDetailKeyModel
    {
        public long FileNo { get; set; }
        public long RecourseNo { get; set; }
    }
OMANSAK
  • 1,066
  • 1
  • 12
  • 30
  • Check this: https://stackoverflow.com/questions/18248547/get-controller-and-action-name-from-within-controller – Prashant Pimpale Feb 05 '20 at 09:50
  • Check my answer [here](https://stackoverflow.com/questions/55179643/asp-net-core-route-attributes-available-in-entire-controller-class/55181747#55181747) – Alexander Feb 05 '20 at 11:02
  • @Alexander its a weired solution :) and i am using `[ApiController]` atturibute. Do you have any solution with that atturibute? – OMANSAK Feb 05 '20 at 14:05
  • @Alexander that solution is second :) – OMANSAK Feb 05 '20 at 14:34

2 Answers2

1

Solution was simple :)

[ApiController]
[Route("api/Claim/{claimId}/Detail/[action]/")]
public class ClaimDetailController
{
    [FromRoute(Name = "claimId")] 
    public int Id { get; set; }
    public ClaimDetailController(IClaimDetailService claimDetailService)
    {
      `bla bla`
    }

    [HttpPost]
    public async Task<BaseResponse> ClaimDetailInfoPolicy(ClaimDetailKeyModel model)
    {
        return `codes with Id`
    }
}
OMANSAK
  • 1,066
  • 1
  • 12
  • 30
0

Add this id to your request handler.

[HttpPost]
public async Task<BaseResponse> ClaimDetailInfoPolicy(int id, ClaimDetailKeyModel model)
{
    return `codes`;
}
Raymond Reddington
  • 1,709
  • 1
  • 13
  • 21