【问题标题】:Passing Plus Sign and Spaces in parameters of Web API in ASP .NET Core MVC在 ASP .NET Core MVC 中的 Web API 参数中传递加号和空格
【发布时间】:2020-04-20 13:33:13
【问题描述】:

我正在尝试在 Asp.NET MVC Core Web API 中传递手机号码。例如 https://api.test.com/GetMobileNumberAvailability/+97199 999 9999/

我的控制器文件部分如下所示:

[HttpGet("GetMobileNumberAvailability/{mobile}")]
public async Task<ActionResult<Client>> GetMobileNumberAvailability(string mobile)
{
    var client = await _context.Clients.Where(client => client.Mobile == mobile).FirstOrDefaultAsync();
    if (client == null)
    {
        return null;
    }
    return client;
}

谁能帮忙解决这个问题?

【问题讨论】:

  • 您需要从调用方UrlEncode 并在您的GetMobileNumberAvailability 操作中对其进行解码。
  • 你能帮我举个例子吗?我真的很感激。
  • 我需要知道您从前端调用该函数的方式。您能否更新您的问题,并包括前端位?
  • trying to pass Mobile Number in Asp.NET MVC Core Web API你可以查看这个SO线程:stackoverflow.com/a/49679099/6751634

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


【解决方案1】:

在到达端点之前对手机号码进行编码。 看起来像https://api.test.com/GetMobileNumberAvailability/%2B971%2099%20999%209999/
并对手机进行解码

[HttpGet("GetMobileNumberAvailability/{mobile}")]
        public async Task<ActionResult<Client>> GetMobileNumberAvailability(string mobile)
        {
            mobile = System.Net.WebUtility.UrlDecode(mobile).Trim();
            var client = await _context.Clients.Where(client => client.Mobile == mobile).FirstOrDefaultAsync();
            if (client == null)
            {
                return null;
            }
            return client;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 2016-11-11
    • 2021-10-05
    • 2013-02-27
    相关资源
    最近更新 更多