Asp.net core DisplayFormat ApplyFormatInputMode未按预期工作-.NET Core

Asp.net core DisplayFormat ApplyFormatInputMode未按预期工作-.NET Core,asp.net-core,razor,.net-core,entity-framework-core,Asp.net Core,Razor,.net Core,Entity Framework Core,创建、删除、详细信息、编辑和索引视图是使用添加新的框架项“使用实体框架(CRUD)的Razor Pages”生成的。“详细信息”、“编辑”和“索引”视图确实显示货币格式,但“创建”视图不显示货币格式。如何在“创建”视图和“编辑”视图中显示货币格式 LoanEstimate.cs using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microso

创建、删除、详细信息、编辑和索引视图是使用添加新的框架项“使用实体框架(CRUD)的Razor Pages”生成的。“详细信息”、“编辑”和“索引”视图确实显示货币格式,但“创建”视图不显示货币格式。如何在“创建”视图和“编辑”视图中显示货币格式

LoanEstimate.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace LoanCalculator.Models
{
    [ModelMetadataType(typeof(LoanEstimateMetadata))]
    public partial class LoanEstimate
    {

    }
    public class LoanEstimateMetadata
    {
        [DisplayName("Annual Taxes")]
        [DataType(dataType: DataType.Currency)]
        [DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
        public decimal AnnualTaxes { get; set; }
    [DisplayFormat(DataFormatString = "{0:p}", ApplyFormatInEditMode = true)]
    public decimal Rate { get; set; }

    }
}
Create.cshtml

    <div class="form-group">
        <label asp-for="LoanEstimate.AnnualTaxes" class="control-label"></label>
        <input asp-for="LoanEstimate.AnnualTaxes" class="form-control" />
        <span asp-validation-for="LoanEstimate.AnnualTaxes" class="text-danger"></span>
    </div>

创建页面问题:未应用货币格式

编辑页面问题:最初应用的是货币格式,但当我编辑时,它将被删除
初始页面加载

编辑后



对于百分比数据格式字符串,我也有同样的问题。

使用货币编辑输入是客户端行为,但DisplayFormat是服务器端行为。因此,您可以使用正确的格式呈现小数,但不能使用货币编辑。常用方法是使用jquery

我建议您可以像下面这样使用
autoNumeric.js

<input asp-for="LoanEstimate.AnnualTaxesDisplayOnly" class="form-control" />
<script>
    var autoNumericInstance = new AutoNumeric("input[id='LoanEstimate_AnnualTaxesDisplayOnly']").northAmerican();
    $("input[id='LoanEstimate_AnnualTaxesDisplayOnly']").on('keyup', function () {
        $("input[id='LoanEstimate_AnnualTaxes']").val(autoNumericInstance.getNumericString());
    }); 
</script>

var autoNumericInstance=new AutoNumeric(“输入[id='LoanEstimate_annualtaxesdisplayenly']”)。北美();
$(“input[id='LoanEstimate\u annualtaxesdisplayenly']”)。on('keyup',function(){
$(“输入[id='LoanEstimate_AnnualTaxes']”)val(autonumeriinstance.getNumericString());
}); 
结果:

谢谢!这是可行的,但也带来了另一个需要克服的障碍。在通过js输入一个用货币符号格式化的值时,我得到一条验证消息“字段年度税必须是一个数字”。您对如何解决这一问题有何建议?请编辑您的答案,以包括以下解决这一障碍的概念,我将其标记为答案:var autonumericinnstance=new AutoNumeric(“输入[id='LoanEstimate_annualtaxesdisplayenly'])。northAmerican()$(“input[id='LoanEstimate_annualtaxesdisplayenly']”)on('keyup',function(){$((“input[id='LoanEstimate_AnnualTaxes']”)val(autonumeriinstance.getNumericString());});您好@MaxPowers,我已经更新了答案。请检查。:)