【问题标题】:BLAZOR: Is it possible to change Display Format of <InputNumber>BLAZOR:是否可以更改 <InputNumber> 的显示格式
【发布时间】:2021-10-01 13:06:00
【问题描述】:
是否可以更改<InputNumber>的显示格式,以便我可以使用N2或C2?
我有以下代码(Amount 这里是decimal):
<InputNumber class="form-control" @bind-Value="@Amount" step="0.01" />
我目前正在使用 .NET5
请帮忙????????????
【问题讨论】:
标签:
c#
.net-core
blazor
.net-5
【解决方案1】:
我不知道 N2 或 C2 是什么意思,但是 Blazor 输入控件可以具有普通 html input 控件具有的任何属性。查看 HTML5 规范,然后继续添加您想要的任何内容。
我的第一个搜索是“HTML5 格式数字输入”,根本没有参考 Blazor。
同样重要的是检查浏览器兼容性说明,在这种情况下:
https://caniuse.com/input-number
【解决方案2】:
我遇到了类似的问题,但今天设法解决了。我拥有的是一个带有不同 HTML 输入的 HTML 表格。它非常有活力。我决定坚持使用常规输入而不是 Inputnumber。我的问题是格式是本地的,使用逗号,然后无法将数字转换为浮点 C# 数据类型。
我的解决方案是直接在值上应用 LINQ,然后还有一个更新的“OnChange”,因此它最终像绑定值一样工作,但对更新有一些额外的控制。这是我的代码:
{
<input type="number" pattern="/^-?\d+\?\d*$/" readonly="@isReadOnly" onKeyPress="if(this.value.length==8) return false;" style="background-color:transparent; border:none; padding: 3px; width: 4em" value="@cellvalue.ToString(new System.Globalization.CultureInfo("en-US")).Replace(",",".")"
@onchange="@((ChangeEventArgs __e) => row.SetField<float>(col, float.Parse(__e.Value.ToString().Replace(",","."),new System.Globalization.CultureInfo("en-US"))))" size="8" step=0.01 max="9999" id="number" />
}
添加的 CultureInfo 是我第一次尝试的解决方案,我认为它实际上没有任何帮助或真正起到任何作用。