目标:同一个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}");
}
可以基本实现要求。