空字符串的表单验证

时间:2018-07-27 07:05:22

标签: c# asp.net-core-mvc

如何使表单的名字输入字段不接受带有空格字符ds3.coalesce(1).write().mode("append").option("header","true").option("compression","none").csv(Directory+"OUTPUT.csv"); 的空字符串

"        "

型号:

    <form asp-action="SaveRegistration" autocomplete="off">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="FirstName" class="control-label"></label>
            <input asp-for="FirstName" class="form-control" />
            <span asp-validation-for="FirstName" class="text-danger"></span>
        </div>

使用public class ContactInfo { [Required(ErrorMessage = "This field is required")] [StringLength(50)] [DisplayName("First name")] public string FirstName { get; set; } } 属性,用户仍可以使用仅包含空格字符[Required]的字符串提交

我知道这是一个简单的问题,但是我是ASP.NET MVC的新手

5 个答案:

答案 0 :(得分:2)

用法:

[NotNullOrWhiteSpaceValidator]
public string FirstName { get; set; }

如何创建自己的属性:

using System;
using System.ComponentModel.DataAnnotations;

public class NotNullOrWhiteSpaceValidatorAttribute : ValidationAttribute
{
    public NotNullOrWhiteSpaceValidatorAttribute() : base("Invalid Field") { }
    public NotNullOrWhiteSpaceValidatorAttribute(string Message) : base(Message) { }

    public override bool IsValid(object value)
    {
        if (value == null) return false;

        if (string.IsNullOrWhiteSpace(value.ToString())) return false;

        return true;        
    }

    protected override ValidationResult IsValid(Object value, ValidationContext validationContext)
    {
        if (IsValid(value)) return ValidationResult.Success;
        return new ValidationResult("Value cannot be empty or white space.");
    }
}

这里还有很多:https://github.com/srkirkland/DataAnnotationsExtensions/tree/master/DataAnnotationsExtensions

答案 1 :(得分:0)

您始终可以使用regular expression

例如:

[RegularExpression(@".*\S+.*$", ErrorMessage = "Field Cannot be Blank Or Whitespace"))]
public string FirstName { get; set; }

答案 2 :(得分:0)

第一

您可以尝试stringlength或minlength数据注释

第二

您可以使用 parsley.js

它是用于客户端表单验证的出色库。

我建议您同时使用客户端验证和服务器端验证。

答案 3 :(得分:0)

注意:这适用于.net MVC 4 +

内部实现了 AllowEmptyStrings [必需(ErrorMessage =“是必需的。”)]

如果允许使用空字符串,则此方法返回true;否则,此方法返回true。否则为假。此方法的默认值设置为false。所以不用担心!测试并验证是否相同。不允许使用单个或多个空字符串。如果未明确将其设为false,则请查看其是否有效。

FYR` {

public class RequiredAttribute : ValidationAttribute
    {
        //
        // Summary:
        //     Initializes a new instance of the 
           System.ComponentModel.DataAnnotations.RequiredAttribute
        //     class.
        public RequiredAttribute();

        //
        // Summary:
        //     Gets or sets a value that indicates whether an empty string is 
       // allowed.
        //
        // Returns:
        //     true if an empty string is allowed; otherwise, false. The default 
        // value is false.
        public bool AllowEmptyStrings { get; set; }

        //
        // Summary:
        //     Checks that the value of the required data field is not empty.
        //
        // Parameters:
        //   value:
        //     The data field value to validate.
        //
        // Returns:
        //     true if validation is successful; otherwise, false.
        //
        // Exceptions:
        //   T:System.ComponentModel.DataAnnotations.ValidationException:
        //     The data field value was null.
        public override bool IsValid(object value);
    }

}`

答案 4 :(得分:0)

默认行为是拒绝空字符串。您可以通过将AllowEmptyStrings设置为true docs

来更改此行为
[Required(ErrorMessage = "This field is required")]