Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc datatype.text根据什么进行验证?_Asp.net Mvc_Validation - Fatal编程技术网

Asp.net mvc datatype.text根据什么进行验证?

Asp.net mvc datatype.text根据什么进行验证?,asp.net-mvc,validation,Asp.net Mvc,Validation,我有一个生产应用程序,它被我们的安全扫描击中了。我知道这是一个不推荐的项目,但是它仍然显示在我的报告中 目前我只看到要采取两项行动 处理每个项目并清除报告上的缺陷 标记该漏洞并注释它已被弃用,然后与我的安全团队联系 关于修复它,我发现向变量添加datatype属性可以消除警告。下面是我修复的一个片段 [DataType(DataType.Text)] public string Name { get; set; } ... [DataType(DataType.Text)] [Required(

我有一个生产应用程序,它被我们的安全扫描击中了。我知道这是一个不推荐的项目,但是它仍然显示在我的报告中

目前我只看到要采取两项行动

  • 处理每个项目并清除报告上的缺陷
  • 标记该漏洞并注释它已被弃用,然后与我的安全团队联系 关于修复它,我发现向变量添加datatype属性可以消除警告。下面是我修复的一个片段

    [DataType(DataType.Text)]
    public string Name { get; set; }
    ...
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "Please enter documentation.")]
    public string Documentation{ get; set; }
    
    我找不到Microsoft提供的有关此数据类型属性验证的任何文档。如果是这样的话,从一些次要的测试中,我仍然可以将复制的任何字符输入为此显示的文本框中


    是否有理由添加此属性,或者我是在浪费时间

    免责声明:这只是我从阅读中理解的(请随意更正)

    ()是一个
    ValidationAttribute
    (从
    ValidationAttribute
    派生而来),您需要向其传递一个(也称为
    DataType

    验证属性需要覆盖在模型绑定上执行的
    IsValid
    方法,并需要确定该值是否有效。这是自定义验证器的外观:

    public class CustomValidator : ValidationAttribute  
    {  
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)  
        {  
            // do some validation
    
            if (/* validation passes */)
            {
                return ValidationResult.Success;  
            }
            else 
            {
                return new ValidationResult("Validation message..."); 
            }
        }  
    }  
    
    现在,回到
    DataTypeAttribue
    (这是一个验证属性),您需要传递它
    DataType
    enum:

    public enum DataType
    {
        Custom = 0,
        DateTime = 1,
        Date = 2,
        Time = 3,
        Duration = 4,
        PhoneNumber = 5,
        Currency = 6,
        Text = 7,
        Html = 8,
        MultilineText = 9,
        EmailAddress = 10,
        Password = 11,
        Url = 12,
        ImageUrl = 13,
        CreditCard = 14,
        PostalCode = 15,
        Upload = 16
    }
    
    据我所见,
    DataTypeAttribtue
    所做的只是为
    DataType.Date
    DataType.Time
    DataType.Currency
    添加一些格式。。。(同时设置
    \u dataTypeStrings

    此外,您还可以使用从
    DataTypeAttribute
    派生的、、等验证属性,并对这些特定类型进行额外验证:

    下面是如何使用这些验证属性:

    public class MyModel
    {
        [Phone] // <- executes the IsValid method of PhoneAttribute
        public String Home { get; set; }
    
        [DataType(DataType.PhoneNumber)] // <- does NOT execute IsValid method of PhoneAttribute
        public String Mobile { get; set; }
    
        [EmailAddress] // <- executes the IsValid method of EmailAddressAttribute
        public String Email { get; set; }
    
        [DataType(DataType.Currency)] // <- does the Currency formatting
        public decimal Price { get; set; }
    
        [DataType(DataType.Date)]  // <- does the Date formatting
        public DateTime ReleaseDate { get; set; }
    
        [DataType(DataType.Text)] // <- does NOT add any validation/formatting
        public string Name { get; set;}
    
        /*
         * this is the only scenario that I can think of, for using: [DataType(DataType.Text)]
         */
        [DataType(DataType.Text)] 
        public object someKey { get; set;}
    
    }
    
    公共类MyModel
    {
    
    [电话]//感谢您的回答!我将仔细检查并确保所有案例都与我在此处所述的相同,然后只与我的安全团队交谈。您知道文本验证的依据是什么吗?我在您的答案、日期、电子邮件、密码等中使用了其他内容,但我不知道文本的用途。@JRHigdon:我已经更新了答案…截至目前为止我理解
    [DataType(DataType.Text)]
    不起任何作用,如果您在
    字符串上使用它。