【问题标题】:ASP.NET Web API Globalization Input FormatASP.NET Web API 全球化输入格式
【发布时间】:2017-01-04 14:16:52
【问题描述】:

ASP Web API 和 ASP 控制器可以自动转换输入:

[HttpGet]
public IActionResult Get(decimal? money, DateTime dateTime){
    // some logic
}

[HttpPost]
public IActionResult Post(decimal? money, DateTime dateTime){
    // some logic
}

HTTP 1.1 以文本格式而不是二进制格式传递,因此遵循准确的字符串格式很重要。 有一篇关于 .NET Core Globalization and Localization setup 的好文章,但是不清楚什么 Culture 用于自动解析参数。

  1. 关于 NumberInfo 和 DateTime 格式应该假设客户什么?

    Post("1.2", "31.01.2017") or Post("1,2", "01/31/2017")
    

    如果我们在服务器上设置UseClientCultureUseClientUICulture,会不会影响输入解析?还是微软在这一步总是使用 InvariantCulture 进行解析?

  2. JavaScript 号码呢? JavaScript 数字对象是否以不变的文化格式传递,还是在 HTTP 传输期间转换为客户端/浏览器文化字符串表示形式?

【问题讨论】:

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


    【解决方案1】:

    您必须遵循在您提供的链接的 ConfigureServices 方法中配置本地化部分中描述的指南,其中明确说明:

    在 ConfigureServices 方法中配置本地化

    由于自动转换将根据当前线程 CultureInfo 实例执行转换,因此您必须选择一种建议的策略才能设置适当的 CultureInfo 并让 autoconversion 魔法发生。

    编辑

    1. 关于 NumberInfo 和 DateTime 格式应该假设客户什么?

    通过指定 Accept-Language 标头或使用嵌入在 url 中的文化参数,是客户端告诉服务器它愿意传递哪种文化。

    网络服务不应该支持客户想要使用的所有语言,但网络服务有责任拒绝此类不受支持的请求。

    1. JavaScript 号码呢? JavaScript 数字对象是否以不变的文化格式传递,还是在 HTTP 传输期间转换为客户端/浏览器文化字符串表示形式?

    您必须明确地传递一个文化感知值,如another answer 中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多