【问题标题】:Stop Asp.Net Core tag helpers formatting numbers停止格式化数字的 Asp.Net Core 标签助手
【发布时间】:2021-02-03 12:29:38
【问题描述】:

当 asp-for 格式化我的输出时,我遇到了这种情况,我输入了 5,但它显示我“5,00”:

当我在法国时,它会放置逗号,然后不验证输入(我想是因为格式)。

有没有办法阻止 asp.net 格式化我的数字 - 保持 5 不变,无需添加任何内容。

<label asp-for="X" class="control-label"></label>
<input asp-for="X" class="form-control" />
<span asp-validation-for="X" class="text-danger"></span>

我加了

[DisplayFormat(ApplyFormatInEditMode = false)]
public decimal X { get; set; }

但这无济于事。

我需要在我的字段中使用小数,但为什么它自己放逗号,然后说“格式无效”?

【问题讨论】:

    标签: c# .net asp.net-core razor asp.net-core-tag-helpers


    【解决方案1】:

    当您使用 Html.DisplayFor 时会考虑 DisplayFormat,我不知道如何将数字强制为特定格式,如果您没有自己将其更改为字符串,或者可能有..

    另一种方法是改变文化,美国或不变

     public ActionResult Index()
            {
                Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
                Thread.CurrentThread.CurrentUICulture =CultureInfo.InvariantCulture;
                return View();
            }
    

    或在视野中(不是很花哨)

    CultureInfo.DefaultThreadCurrentCulture = new CultureInfo.InvariantCulture;
    Html.DisplayFor(model => model.whatever)
    

    我仍然认为这不能解决小数问题,它将是 4.00 而不是 4,00

    如果您不想要小数,请在视图模型上使用 int 或小数

    【讨论】:

    • 我使用标签助手;不是 "DisplayFor" ,你认为 DisplayFor 而不是 "asp-for" 会有助于解决问题吗?
    • 不,它不会,我的意思是在您的示例中输入 asp-for="X" 实际上是 Html.EditorFor,它与 DisplayFor 和 DisplayFormat 做类似的事情,您可以尝试在日期时间作为示例来理解是有效的,它会,但正如我所说,我认为你不能将小数显示为非小数,你不应该,如果你有一个带小数的小数怎么办视图中呈现的对象?然后怎样呢?所以你能做的最好的就是强制使用 Invariant 文化或使用 int 而不是 decimal
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2023-04-03
    • 2018-10-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多