Asp.net core Razor页面显示隐藏输入的验证

Asp.net core Razor页面显示隐藏输入的验证,asp.net-core,.net-core,razor-pages,Asp.net Core,.net Core,Razor Pages,我试图为十进制数提供用户友好的输入(以百分比表示),并能够进行验证。我被卡住了,因为如果关联的输入被隐藏,将不会显示的asp验证 当前的技术是在仅显示字段上使用autonumeric.js进行客户端格式化,该字段被复制到要保存到db的字段中 如何获取要显示的验证消息 LoanEstimate.cs [NotMapped] public string RateDisplayOnly { get; set; } [Range(0,1,ErrorMessage="Rate must be

我试图为十进制数提供用户友好的输入(以百分比表示),并能够进行验证。我被卡住了,因为如果关联的输入被隐藏,将不会显示的asp验证

当前的技术是在仅显示字段上使用autonumeric.js进行客户端格式化,该字段被复制到要保存到db的字段中

如何获取要显示的验证消息

LoanEstimate.cs

[NotMapped]
public string RateDisplayOnly { get; set; }

[Range(0,1,ErrorMessage="Rate must be between 0.000% and 100.00%")]
[DisplayFormat(DataFormatString = "{0:p}")]
[Required]
public decimal? Rate { get; set; }
Create.cshtml

    <div class="form-group">
        <label asp-for="LoanEstimate.Rate" class="control-label"></label>
        <input asp-for="LoanEstimate.RateDisplayOnly" class="form-control autonumeric-display-only autonumeric-percent" />
        <input asp-for="LoanEstimate.Rate" class="form-control" type="hidden"/>
        <span asp-validation-for="LoanEstimate.Rate" class="text-danger"></span>
    </div>
问题隐藏LoanEstimate.Rate的输入时,不会显示验证消息

注意:这里是未隐藏时正确显示的

使用
$.validator.setDefaults
,下面是一个演示:

视图:

结果:

谢谢!按submit时确实会触发该消息。我注意到,当输入字段未隐藏时,验证消息会在我从字段中签出时触发,但是使用此方法时,它仅在按submit时触发。有没有办法让它在我制表符退出时触发?我已经更新了我的答案,在
上添加了模糊功能,当元素失去焦点时,验证$(“#Rate”)。太棒了!你在上面的评论中的建议是有效的,注意:你在答案中的代码示例并不有效。请替换为类似$(“.autonumeric display only”).blur(函数(){var str=this.id var getThis=str.substring(0,str.indexOf(“DisplayOnly”))$(“#”+getThis.valid());(我相信文件里面已经准备好了)我会记下答案。谢谢你的帮助!啊,但是您的示例与您的代码配合使用,所以很好,标记为答案,谢谢!
$(document).ready(function ($) {

    //autonumeric.js field formatting
    const anElement = AutoNumeric.multiple('.autonumeric-currency', {
        currencySymbol: "$"
    });

    const anElement2 = AutoNumeric.multiple('.autonumeric-percent', {
            decimalPlaces: 3,
            rawValueDivisor: 100,
            suffixText: "%"
        }
    )
    $(".autonumeric-display-only").on('keyup', function () {
        var str = this.id
        var getThis = str.substring(0, str.indexOf("DisplayOnly"))
        $("#" + getThis).val(AutoNumeric.getNumericString("#" + this.id));
    });
    
});
<form method="post">
    <div class="form-group">
        <label asp-for="Rate" class="control-label"></label>
        <input asp-for="RateDisplayOnly" class="form-control autonumeric-display-only autonumeric-percent" onblur="validateRate()"/>
        <input asp-for="Rate" class="form-control" hidden />
        <span asp-validation-for="Rate" class="text-danger"></span>
    </div>
    <input type="submit" value="submit" />
</form>
function validateRate() {
        $("#Rate").valid();
    }
$.validator.setDefaults({
            ignore: [],
            // other default options
        });
        $(document).ready(function ($) {

            //autonumeric.js field formatting
            const anElement = AutoNumeric.multiple('.autonumeric-currency', {
                currencySymbol: "$"
            });

            const anElement2 = AutoNumeric.multiple('.autonumeric-percent', {
                decimalPlaces: 3,
                rawValueDivisor: 100,
                suffixText: "%"
            }
            )
            $(".autonumeric-display-only").on('keyup', function () {
                var str = this.id
                var getThis = str.substring(0, str.indexOf("DisplayOnly"))
                $("#" + getThis).val(AutoNumeric.getNumericString("#" + this.id));
            });

        });