Asp.net core DisplayFormat ApplyFormatInputMode未按预期工作-.NET Core
创建、删除、详细信息、编辑和索引视图是使用添加新的框架项“使用实体框架(CRUD)的Razor Pages”生成的。“详细信息”、“编辑”和“索引”视图确实显示货币格式,但“创建”视图不显示货币格式。如何在“创建”视图和“编辑”视图中显示货币格式 LoanEstimate.csAsp.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
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,我已经更新了答案。请检查。:)