C# 獲取同controller裡面其他方法的URL並通過HttpContext並傳遞
阿新 • • 發佈:2022-03-02
目標:同一個controller中,將方法二的路由通過方法一返回的response的傳遞給UI。路由需要包含controller的RoutePrefix 和方法二本身的Route.
controller 如下:
[Authorize] [RoutePrefix("api/ControllerName")] public class TestController : BaseController { [HttpGet] [Route("create")] [ResponseType(typeof( ))] public Task<IHttpActionResult> MethodOne([FromBody] string pram1){} [HttpPut] [Route("update")] [ResponseType(typeof( ))] public Task<IHttpActionResult> MethodTwo([FromBody] string pram1){} }
因為要求不能直接命名路由,所以通過屬性獲取在方法一中加入以下code:
public Task<IHttpActionResult> MethodOne([FromBody] string pram1) { var RoutePrefix = ControllerContext.ControllerDescriptor.GetCustomAttributes<System.Web.Http.RoutePrefixAttribute>() .FirstOrDefault() ?.Prefix; HttpContext.Current.Response.AddHeader(nameof(MethodTwo), $"{RoutePrefix}/nameof(MethodTwo)/{pram1}"); }
可以基本實現要求。