【问题标题】:pass parameter with space web api mvc4使用空间 web api mvc4 传递参数
【发布时间】:2013-11-27 07:27:38
【问题描述】:

我正在使用 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/
输出
[{"Name":"Ashok","Age":60,"Country":"India"},{"Name":"Nargis","Age":30,"Country":"India"},{ "姓名":"纳尔吉斯","年龄":35,"国家":"伊朗"},{"姓名":"史蒂夫","年龄":50,"国家":"南非"}]

案例 2
输入:.../api/contact/FindDetailsByCountry/印度
输出
[{"Name":"Ashok","Age":60,"Country":"India"},{"Name":"Nargis","Age":30,"Country":"India"}]

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

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

  1. ...api/contact/FindDetailsByCountry/South+Africa
  2. ..api/contact/FindDetailsByCountry/South%20Africa
  3. ../api/contact/FindDetailsByCountry/“南非”
  4. ../api/contact/FindDetailsByCountry/'南非'

仍然出现同样的错误。
实际上,我将在我的 android 应用程序中使用输出。 在 android 中,我也使用了URLEncoder.encode("South Africa", "UTF-8")。但没有结果。

谁能告诉我如何传递参数南非
非常感谢 ps2goat 提出我之前的问题。现在可以使用了。

谢谢

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    因为你有constraints,它不允许空间。因此,您将无法传递空间。/

    你的代码

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

    改成

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

    【讨论】:

      【解决方案2】:

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

      URL Encoding in c# and Asp.net web api

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多