asp.net-mvc - ValidationAttribute.ErrorMessage 中的替换参数

标签 asp.net-mvc validation

在 ASP.NET MVC 4 应用程序中,LocalPasswordModel 类(在 Models\AccountModels.cs 中)如下所示:

public class LocalPasswordModel
{
    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Current password")]
    public string OldPassword { get; set; }

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New password")]
    public string NewPassword { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm new password")]
    [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }
}

上面的代码在 ErrorMessage 字符串中包含两个替换参数:
ErrorMessage = "The {0} must be at least {2} characters long."

有人能告诉我被替换为该字符串的值来自哪里吗?更一般地说,是否有任何近似官方文档来描述参数替换在这种情况下的工作原理?

最佳答案

对于 StringLengthAttribute,消息字符串可以采用 3 个参数:

{0} Property name
{1} Maximum length
{2} Minimum length

不幸的是,这些参数似乎没有得到很好的记录。这些值是从每个验证属性的 FormatErrorMessage 传入的。属性。例如,使用 .NET Reflector,这是来自 StringLengthAttribute 的方法:
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 });
}

可以安全地假设这永远不会改变,因为这会破坏几乎所有使用它的应用程序。

关于asp.net-mvc - ValidationAttribute.ErrorMessage 中的替换参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193145/

相关文章:

javascript - 只有当它有标题时才显示 img?

wpf - 在WPF中,如何在TextBox中显示验证错误,如下图所示?

php - 处理来自多个 XHR 实例的多个 PHP 脚本调用

oracle - 验证 Oracle dmp

c# - 即使在使用 Identity ASP.NET MVC 框架关闭浏览器后,如何让用户保持登录状态?

javascript - 您可以从 ASP.NET MVC 5 中的 Controller 深层链接到页面吗?

asp.net-mvc - ASP.Net MVC是否应为每个 View 创建一个模型?

c# - 如何将 Dictionary 对象传递给泛型类型参数?

asp.net-mvc - 如何保护用户上传的文件

javascript - JQuery 验证器工具提示,需要帮助识别 javascript 库吗?