Mar*_*nni 1 c# asp.net-mvc hex colors
我正在制作一个管理输入面板。
管理员可以选择使用十六进制值(例如 #0000ff 或 #008000 等)创建自定义颜色。
现在,我在我的模型中使用它:
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter the color")]
public string Color { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何验证以便管理员只能在此处输入十六进制值?
最重要的是,这真的有必要吗?我听说浏览器倾向于忽略错误的十六进制代码为什么 HTML 认为“chucknorris”是一种颜色?
我会说最好验证您的输入,然后中继浏览器的自定义行为。
您可以使用以下属性或多或少地验证您的字段:
public class HexColorAttribute : ValidationAttribute
{
private string _errorMessage;
public HexColorAttribute(string errorMessage)
{
_errorMessage = errorMessage
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var colorHexStr = (string)value;
var valid = Regex.IsMatch(colorHexStr, "#[0-9a-fA-F]{6}");
if(valid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(_errorMessage)
}
}
Run Code Online (Sandbox Code Playgroud)
进而:
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter the color")]
[HexColor("Color has to have format '#123456'")]
public string Color { get; set; }
Run Code Online (Sandbox Code Playgroud)
它的工作方式类似于必需属性。看一下RequiredAttribute 的源代码。
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |