ASP.NET Core 本地化小数字段点和逗号

2023-11-25

我有一个本地化的 ASP.NET Core Web 应用程序:en-US 和 it-IT。

在 en-US 中,小数分隔符是点,在 it-IT 中,小数分隔符是逗号。

我有这个视图模型

public class MyViewModel 
{
    public int Id {get; set; }

    // Omitted

    public decimal? Amount{get; set;}

}

对于我在上呈现创建/编辑页面时的小数字段en-UShtml 文本框渲染

1000.00

如果我发布表单,则操作完成且没有错误。

到目前为止,一切都很好。

当我渲染创建/编辑页面时it-IThtml 文本框渲染

1000,00(注意逗号)

如果我尝试发布表单,(客户端)验证fail with

字段金额必须是数字。

我读到了有关 IModelBinder 的内容,但我知道它是用于在将表单发布到服务器上时映射 viewModel,就我而言,我被客户端验证阻止了。

更好的是在 en-US 时使用点,在 it-IT 时使用逗号,但仅使用点也可以


深入挖掘问题后,我找到了两个解决方案:

评论来自史蒂芬·穆克其中解释如何将所需的 jquery 添加到 a 的输入验证逗号和点

自定义 InputTagHelper,将逗号转换为点。这里我只添加了小数类型,但显然你可以添加 float 和 double。

[HtmlTargetElement("input", Attributes = ForAttributeName, TagStructure = TagStructure.WithoutEndTag)]
public class InvariantDecimalTagHelper : InputTagHelper
{
    private const string ForAttributeName = "asp-for";

    private IHtmlGenerator _generator;

    [HtmlAttributeName("asp-is-invariant")]
    public bool IsInvariant { set; get; }

    public InvariantDecimalTagHelper(IHtmlGenerator generator) : base(generator)
    {
        _generator = generator;
    }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        base.Process(context, output);

        if (IsInvariant && output.TagName == "input" && For.Model != null && For.Model.GetType() == typeof(decimal))
        {
            decimal value = (decimal)(For.Model);
            var invariantValue = value.ToString(System.Globalization.CultureInfo.InvariantCulture);
            output.Attributes.SetAttribute(new TagHelperAttribute("value", invariantValue));                
        }
    }
}

要使用第二个解决方案,您只需将 asp-is-invariant 添加到您的输入中,如下所示

 <input asp-for="AmountSw" class="form-control" asp-is-invariant="true" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core 本地化小数字段点和逗号 的相关文章

  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • App Insights 升级到 2.5 后,Azure 应用服务将无法启动

    我有一个存储库 它使用应用程序洞察来记录有关在 ASP NET 中运行的服务的信息 我们有一些 ASP NET Core 2 0 站点以及一些完整框架的 asp net 4 应用程序 随着应用程序洞察 2 5 的发布 我们在核心站点中获得了
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 如何在服务器上保存用户凭据以在后台运行查询

    背景 我们有一个 ASP NET Silveright Web 应用程序 silverlight客户端显示用户 图形形式的特定数据 它从服务器请求数据 问题 由于服务器必须执行底层数据库查询 获取这些数据的成本很高 因此客户端必须等待 优化
  • 如何在单击按钮时重新绑定 igGrid igniteUI 控件中的数据?

    我在 ASP NET MVC3 应用程序中使用 Infragistics Ignite UI 控件 我有一个已绑定到 客户 数据的网格 工作正常 现在我有按钮了 单击后我会进行 ajax 调用 在控制器中 我编写了仅选择 客户 数据的一部分
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz

随机推荐

  • Java 覆盖特定区域设置的区域设置

    我在用着NumberFormat getCurrencyInstance format amount 将货币从 BigDecimal 格式化为字符串 这按预期工作 问题是我们的主要目标是荷兰市场 而默认的荷兰语格式很奇怪 让我解释一下 当格
  • 在我的标签元素上设置 height: 100% 不起作用

    我尝试设置height 100 在标签中 但它不起作用 为什么不 field label color 3E3E3E font weight bold width 80px display block float left margin to
  • “AnyCPU”平台目标上的内存分配模式

    我故意在一个简单的 C 程序中泄漏内存 以了解有关 NET 如何管理这方面的更多信息 这是使用完成的int 数组 每个数组大小为 1000 万 每 100 毫秒声明一次 数组的元素不会被 触及 如分配一个值 以免将数据带入进程的工作集中 c
  • 服务层和控制器:谁负责什么?

    在课堂上 我们现在正在学习如何构建 Spring 应用程序 即使没有直接涉及 Spring 我们也学习了如何为 DAO 和服务层对象创建接口 如果我错了 请纠正我 DAO 层非常抽象 它只包含 CRUD 操作 并进一步用于读取数据 即 获取
  • Java 转换器错误:无法编译样式表

    我想用 Java 中的 XSLT 转换 XML 为此 我正在使用javax xml transform包裹 但是 我得到了例外javax xml transform TransformerConfigurationException Cou
  • CURLOPT_VERBOSE 不起作用

    Windows 7 x64 PHP 7 2 2 x64 我正在尝试查看一个简单的请求有效负载 因此我为每个创建了一个 PHP 文件https docstore mik ua orelly webprog pcook ch11 07 htm
  • 是否有一种解决方法可以使名称以数字开头的 CSS 类有效? [复制]

    这个问题在这里已经有答案了 是否在名称以数字开头的 CSS 类不起作用的地方引用了它 例如 我发现一个具有如下背景的类 000000 8 background url images common 000000 0 8 png 8FFFFFF
  • 如何从 iframe 内部删除多余的边距?

    我目前正在网站上开发混合媒体的旋转蒙太奇 网站上将轮流显示大约 5 个图像 视频 该网站还使用 Ektron CMS 因此我无法确定蒙太奇中的哪些位置是图像 哪些位置是视频 这些视频托管在 YouTube 上 所以 我的问题是视频加载时与
  • 在 Javascript 中使用 XMLHttpRequest 暂停下载

    我正在尝试使用带有 Javascript 的 XMLHttpRequest 对象的 Web 链接来下载文件 我无法确定是否可以pause下载后resume it 技术上是可以的 无需暂停 恢复 您只需执行响应类型为 blob 的 XmlHt
  • 如何在 Azure Arm 模板中使用粘性暂存槽

    如何使用 ARM 模板将粘性设置部署到 azure Web 应用程序中的生产应用程序槽 而不覆盖现有应用程序设置 我正在使用 Azure ARM 模板来部署我的环境和代码版本 该环境同时具有暂存和生产槽 部署的一部分是部署 AppSetti
  • Angular ui 路由器为所有状态提供多个命名视图

    我想知道是否有任何方法可以为所有状态编写多个命名视图 最好的例子是当我希望导航栏和页脚出现在所有路线中时 stateProvider state home views home templateUrl home html controlle
  • 将图像放置在图像上

    我想将图像放置在捕获的视频帧上我确定的坐标处 我之前问过 我被告知要使用cvCopy and cvSetImageROI但我不想裁剪这些坐标 我想添加另一个图像 也许这是正确的方法 但我不明白 如果正确 请解释 我不久前使用 SetRoi
  • 深度嵌套子查询分解 (CTE) 性能缓慢

    该查询由 16 个相等的步骤组成 每一步都是对同一数据集 单行 进行相同的计算 但最后的步骤需要太多时间 with t0 as select 0 as k from dual t1 as select k from t0 where k g
  • Ubuntu Firefox 的渲染方式有所不同

    与其他浏览器相比 Ubuntu 上的 Firefox 呈现某些 HTML 的方式似乎有很大不同 特别是 Ubuntu 上的一些字体 样式变得越来越大 并且依赖相同数量的换行符来保持对齐的文本列在 Ubuntu Firefox 上不再对齐 我
  • Firefox 在哪里存储 sessionStorage 内容

    我试图找出 Firefox 存储 sessionStorage 内容的位置 但一直找不到 我希望它位于 SqLite 数据库中 就像存储 localStorage 内容一样 但我一直找不到它 到目前为止 我已经搜索了配置文件文件夹中的所有典
  • Laravel Blade - 通过 @include 或 @yield 传递变量

    我需要将变量传递给包含的 Blade 文件 我尝试过两种方式 然而 两者都没有成功 传递一个变量 title 到包含的文件 section left include modal title gt Hello stop Use yield并设
  • 按月分组的聚合 SQL 查询

    我有一个按每小时 每天和每月间隔记录的事务数据库 Access 2007 我想以一种有意义的方式查看它们 而不是按小时计算能源使用情况 这是它的存储方式 我想要 2011 年 1 月的所有使用情况 我想要操作的表具有以下通用格式 CustI
  • 是否可以在 SQL Server 2014 中为 .NET 框架程序集创建非对称密钥?

    我正在 Visual Studio 中开发一个 SQL Server 数据库项目 它实际上是一个用户定义函数 在此项目中 我包含 Json NET 作为参考 使用 NuGet 我设法通过首先打开数据库将我的程序集和 UDF 发布 并使其工作
  • 仅显示 Rails 中字符串的前 x 个单词

    我可以显示这样的消息 但在某些情况下我想只显示字符串的前 5 个单词 然后显示省略号 在导轨中4 2您可以使用截断单词 Once upon a time in a world far far away truncate words 4 gt
  • ASP.NET Core 本地化小数字段点和逗号

    我有一个本地化的 ASP NET Core Web 应用程序 en US 和 it IT 在 en US 中 小数分隔符是点 在 it IT 中 小数分隔符是逗号 我有这个视图模型 public class MyViewModel publ