gpt4 book ai didi

jquery - MVC3 不显眼的 jquery 验证 data-val-number

转载 作者:可可西里 更新时间:2023-11-01 14:55:39 25 4
gpt4 key购买 nike

真的在与 MVC3 设置的内置不显眼的 jquery 验证作斗争。

我的对象有如下属性:

    [DisplayName("GP")]
[DataType(DataType.Currency)]
[DisplayFormat(NullDisplayText = "$0", DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
[Column("gross_profit")]
public decimal? GrossProfit { get; set; }

EditorFor 制作了一个文本框,这很好,但是验证失败,因为我希望用户能够输入货币前缀...例如48,000 美元.. 客户端验证失败,表示该属性不是数字。

我编写自己的数据注释和自定义模型绑定(bind)没有问题,但我无法弄清楚如何阻止 MVC 自动将“data-val-number”放入文本输入只是因为它是小数类型。

我相信“data-val-number”会阻止 jquery 不显眼的验证通过,因为输入字段包含一个美元符号,也许还有一个逗号。

所以我不是在寻找任何全局化技巧,而是一种允许用户输入“$48,000”之类的文本并通过验证的方法...

我也想对百分比值采用相同的方法......例如“25%”

最佳答案

您不想在 decimal? 属性中使用非数字值来显示。有几种方法可以处理此问题,但 MVC 中的默认模型联编程序将始终尝试将 ######.## 显式映射到小数字段。如果您有 $##、###.## 等辅助输入,它会爆炸,因为它不能直接转换为十进制值。

您有 2 种解决方案,第一种是使用输入屏蔽,例如:

http://www.xaprb.com/html-input-mask/html-form-input-mask.html

http://digitalbush.com/projects/masked-input-plugin/

仅调整输入的 UI 显示。

或者您可以使用模型中具有字符串数据类型的相同逻辑。

[DisplayName("GP")]
[DataType(DataType.Currency)]
[DisplayFormat(NullDisplayText = "$0", DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
[Column("gross_profit")]
public string CurrencyDisplay { get; set; }

public decimal? CurrencyInput
{
get
{
//parse out non-int fields to return from value in CurrencyDisplay
}

set
{
//format string and seed into CurrencyDisplay
}
}

关于jquery - MVC3 不显眼的 jquery 验证 data-val-number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9685543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com