c# - 在 asp.net web API 中将路由参数映射为 bool

标签 c# asp.net

所以我现在注册了以下路线:

configuration.Routes.MapHttpRoute(
            name: "MediaHandler",
            routeTemplate: "api/mediahandler/{action}/{id}",
            defaults: new { controller = "PortalAsset", id = RouteParameter.Optional }
        );

Controller 如下所示:

 public class MediaHandlerController : ApiControllerBase
{
    ///...
      [HttpGet]
      [ActionName("download")]
      public async Task<HttpResponseMessage> DownloadAsset(long id)
      {
           // action
      }

我想向 Controller 添加 bool 参数 - isPreview 并希望按以下方式映射路由:

  1. http://host/api/mediahandler/download/1893映射到:id=1893,isPreview=false
  2. http://host/api/mediahandler/download/1893/preview映射到:id=1893,isPreview = true

有什么办法可以实现这一点吗?

最佳答案

attribute routing你可以这样做

[RoutePrefix("api/mediahandler/download")]
public class MediaHandlerController : ApiControllerBase
{
      [HttpGet]
      [Route("{id}")]
      public async Task<HttpResponseMessage> DownloadAsset(long id)
      {
           return DownloadAsset(id, false);
      }

      [HttpGet]
      [Route("{id}/preview")]
      public async Task<HttpResponseMessage> DownloadAssetPreview(long id)
      {
          return DownloadAsset(id, true);
      }

      private async Task<HttpResponseMessage> DownloadAsset(long id, bool isPreview)
      {
           // action
      }
}

关于c# - 在 asp.net web API 中将路由参数映射为 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490964/

相关文章:

asp.net - MVC3 ascx vs razor 页面渲染问题

asp.net - 限制面向公众的 ASP.NET 应用程序演示站点?

c# - 后台 worker 如何

c# - CMake C# 项目 "unsafe"属性

c# - 类(class)成员是否占用内存?

c# - SQL 异常 : "Impersonate Session Security Context" cannot be called in this batch because a simultaneous batch has called it

c# - 使用 X509Certificate2 在 https 中进行客户端证书身份验证

c# - IControllerFactory 与 IControllerActivator asp.net core

c# - 如何删除 Visual Studio C# Express 中的片段?

c# - MVCMailer smtp mailsettings 以编程方式设置配置设置