What parameters does the stringlength attribute errormessage take?
Solution 1
The {0}
index is the display name of property, {1}
is the MaximumLength
, {2}
is the MinimumLength
. So, your error message will be formate as "The Foo must be at least 6 characters long."
Solution 2
I haven't seen any documentation either, but the FormatErrorMessage
method for the StringLengthAttribute
looks like this:
public override string FormatErrorMessage(string name)
{
EnsureLegalLengths();
string format = ((this.MinimumLength != 0) && !base.CustomErrorMessageSet) ? DataAnnotationsResources.StringLengthAttribute_ValidationErrorIncludingMinimum : base.ErrorMessageString;
return String.Format(CultureInfo.CurrentCulture, format, new object[] { name, MaximumLength, MinimumLength });
}
Solution 3
A longer-than-expected Google search brought me to this old topic before I could start getting some solid leads, so I'll put this here and hope it helps anyone else in the same shoes:
Inspecting the code for StringLengthAttribute that MS put up on GitHub confirms the logic residing in the FormatErrorMessage method:
// it's ok to pass in the minLength even for the error message without a {2} param since String.Format will just
// ignore extra arguments
return String.Format(CultureInfo.CurrentCulture, errorMessage, name, this.MaximumLength, this.MinimumLength);
Thus '0', '1', and '2' corresponds to 'name' (of Property), 'MaximumLength', and 'MinimumLength' accordingly.
I bet the same method can be applied to all other validation attributes to check their formatting parameters accordingly; I was not able to find any other documentation for this infomation otherwise.
Anders E. Andersen
Programmer, mainly in the Delphi and C# languages. Projects include web front-ends and REST back-ends for ERP systems as well as in house tooling and support applications. Experienced 1st and 2nd level supporter on ERP systems used in property management.
Updated on June 02, 2022Comments
-
Anders E. Andersen almost 2 years
In the MVC4 template one of the data annotation attributes used is stringlength.
For example:
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
What parameters {0}, {1}, {2} (more?) are legal?
Edit: To be more specific, I can see from the example and trial and error what the possibilities are, but I would like to see some hard documentation.
I can't find anything about this in the StringLengthAttribute documentation.
-
Anders E. Andersen over 11 yearsYes, well I guess what I am really asking is, how can I know this, apart from trial and error. Is it implemented in the StringLengthAttribute class itself in the FormatErrorMessage method? Is this documented?
-
Shimmy Weitzhandler over 8 yearsWhat if
MinimumLength
wasn't specified? And if what if it's the only property that was set whileMaximumLength
is zero? -
Alexander Mihailov about 5 yearsThis should be the accepted answer. The current one does not explain where the information is coming from.
-
AjimOthy almost 4 yearsNo idea if it was true many years ago when this was answered, but the docs currently state this in remarks. docs.microsoft.com/en-us/dotnet/api/…