c# - 如何使用 Route 属性将查询字符串与 Web API 绑定(bind)?

标签 c# asp.net asp.net-web-api asp.net-web-api-routing

我正在尝试让它工作:

[Route("api/Default")]
public class DefaultController : ApiController
{
    [HttpGet, Route("{name}")]
    public string Get(string name)
    {
        return $"Hello " + name;
    }
}

通过调用这个 http://localhost:55539/api/Default?name=rami 但是没有用,也试过这个:http://localhost:55539/api/Default/Hello?name=rami ,这也不起作用:http://localhost:55539/api/Default/Hello/rami

最佳答案

确保在 WebApiConfig.cs 中启用属性路由

config.MapHttpAttributeroutes();

ApiController 操作可以分配多个路由。

[RoutePrefix("api/Default")]
public class DefaultController : ApiController {

    [HttpGet]
    //GET api/Default
    //GET api/Default?name=John%20Doe
    [Route("")]
    //GET api/Default/John%20Doe
    [Route("{name}")]
    public string Get(string name) {
        return $"Hello " + name;
    }
}

还有使参数可选的选项,这样您就可以在不使用内联参数的情况下调用 URL,并让路由表使用类似于基于约定的路由的查询字符串。

[RoutePrefix("api/Default")]
public class DefaultController : ApiController {

    [HttpGet]
    //GET api/Default
    //GET api/Default?name=John%20Doe 
    //GET api/Default/John%20Doe
    [Route("{name?}")]
    public string Get(string name = null) {
        return $"Hello " + name;
    }
}

关于c# - 如何使用 Route 属性将查询字符串与 Web API 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199946/

相关文章:

c# winforms显示ffmpeg输出

C# 嵌套类型列表

c# - 使用无效证书解决方法的 WebService 的 SSL 连接不起作用

c# - 将现有部署升级到最新版本的最佳方式

C#:输入字符串的格式不正确

asp.net - Asp.Net Web API 的默认 header 值 "Accept"

asp.net - 带有 SQL 数据源的 Gridview 正在删除空格

c# - 为 Web API 1、.net 4.0 启用 CORS

asp.net-mvc - ASP.NET MVC Controller 无法使用流式内容正确返回 HttpResponseMessage

c# - 使用 $expand 时的 Web API OData 媒体类型格式化程序