gpt4 book ai didi

c# - 用于动态小数位数的 MVC ValidationMessage

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:12 25 4
gpt4 key购买 nike

我需要在教科书输入中强制执行动态小数位数。我已经看到使用属性属性和正则表达式强制设置小数位数的堆栈溢出示例。

我的要求是动态的。 @Html.TextBoxFor() 是动态生成的,每个都链接到一个属性,该属性具有自己的小数位要求。因此,如果结果需要 3 位小数,即使结果为 1,也必须输入 1.000。但是,下一个结果可能需要 5 位小数,因此需要为 1.00000。

属性是

List<Result> results

结果在哪里

public class Result{

public float NumericResult;

public int DecimalPlaceRequired;

}

在 MVC 中实现这种动态验证的最佳方式是什么?

最佳答案

您可以尝试编写继承自 ValidationAttributeoverride 方法的客户验证属性。

override ValidationResult IsValid(object value, ValidationContext validationContext)

validationContext.ObjectInstance 实例获取 DecimalPlaceRequired 值。然后通过 Regex 验证。

public class CutomerAuthAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{

var model = validationContext.ObjectInstance as Result;
if (model != null)
{
string pattern = GetPattern(model);

if (Regex.IsMatch(value.ToString(), pattern))
{
return null;
}
}

return new ValidationResult("Please input correct float number");
}

private string GetPattern(Result model)
{
string pattern = "^[+]?[0-9]+";

if (model.DecimalPlaceRequired > 0)
pattern += "[.][0-9]{" + model.DecimalPlaceRequired + "}";

pattern += "$";

return pattern;
}
}

NumericResult 属性上添加 CutomerAuth 属性。

public class Result
{
[CutomerAuth]
public float NumericResult { get; set; }

public int DecimalPlaceRequired { get; set; }

}

这是给你的例子

c# online

关于c# - 用于动态小数位数的 MVC ValidationMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625744/

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