使用space web api mvc4传递参数

时间:2013-11-27 07:27:38

标签: asp.net-mvc-4

我正在使用web api MVC4。在get方法中,我将传递字符串参数,该参数将具有空格。 在执行期间,它会出错。

我的 WebApiConfig 如下所示

     config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

    config.Routes.MapHttpRoute(
            name: "FindDetailsByCountry",
            routeTemplate: "api/{controller}/FindDetailsByCountry/{country}",
            defaults: new { country = RouteParameter.Optional },
            constraints: new { country = @"^[a-z]+$" }
        );

现在我运行应用程序

案例1
输入:... / api / contact /
输出
[{ “名称”: “阿肖克”, “年龄”:60, “国家”: “印度”},{ “名称”: “纳尔吉斯”, “年龄”:30, “国家”: “印度”},{ “姓名”:“纳尔吉斯”,“年龄”:35,“国家”:“伊朗”},{“姓名”:“史蒂夫”,“年龄”:50,“国家”:“南非”}]

案例2
输入:... / api / contact / FindDetailsByCountry / india
输出
[{ “名称”: “阿肖克”, “年龄”:60, “国家”: “印”},{ “名称”: “纳尔吉斯”, “年龄”:30, “国家”: “印度”}] < / p>

案例3
输入:... / api / contact / FindDetailsByCountry / 南非
输出: HTTP错误404.0 - 未找到 您要查找的资源已被删除,名称已更改或暂时不可用

对于案例3,我收到错误。我已经使用这些选项检查了

  1. ... API /联系人/ FindDetailsByCountry /南非洲+
  2. .. API /接触/ FindDetailsByCountry /南%20Africa
  3. ../ api / contact / FindDetailsByCountry /“South Africa”
  4. ../ api / contact / FindDetailsByCountry /'South Africa'
  5. 仍然是同样的错误。
    其实我会在我的android应用程序中使用输出。 在android中我也使用了URLEncoder.encode("South Africa", "UTF-8")。但没有结果。

    任何人都可以告诉我如何传递参数南非吗? 非常感谢ps2goat对我之前的问题。它现在有效。

    由于

2 个答案:

答案 0 :(得分:0)

请看下面的链接..它可能有帮助..

URL Encoding in c# and Asp.net web api

答案 1 :(得分:0)

因为你constraints不允许空间。因此,你将无法通过空间./

您的代码

constraints: new { country = @"^[a-z]+$" }

将其更改为

constraints: new { country = @"^[a-z]\s+$" }