What parameters does the stringlength attribute errormessage take?

限于喜欢 提交于 2019-11-27 01:28:43

问题


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.


回答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."




回答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 });
}



回答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.



来源:https://stackoverflow.com/questions/13425320/what-parameters-does-the-stringlength-attribute-errormessage-take

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!