MVC DataAnnotation Accept No Spaces

How about this:

[RegularExpression(@"^\S*$", ErrorMessage = "No white space allowed")]

Well, the simplest but robust thing I can think of is to look at how existing code works, or how existing data annotation work.

For example, let's look at the System.ComponentModel.DataAnnotations.StringLengthAttribute class.

Here's the definition only (just to keep short):

namespace System.ComponentModel.DataAnnotations
{
    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
    public class StringLengthAttribute : ValidationAttribute
    {
        public StringLengthAttribute(int maximumLength);

        public int MinimumLength { get; set; }

        public override string FormatErrorMessage(string name);
       
        public override bool IsValid(object value);
    }
}

So I would simply copy the original implementation source code from GitHub and customize it to my needs. For example, to obtain a signature like this (if I understood correctly and this is what you wanted):

public StringLengthAttribute(int maximumLength, int minLength = 0, allowEmptySpaces = true);

For more in-depth info, I would also read the Microsoft docs on the ValidationAttribute class, which is your base class for custom validation data annotations.

EDIT:

I would NOT rely on Regular Expressions to validate data in cases where I just need to exclude empty strings or strings containing only white space(s), because Regular Expressions are very expensive to process (and require a lot of memory allocation, because of an expression compiler, a state machine, etc.).