gpt4 book ai didi

asp.net-mvc - {0} 的长度必须至少为 {2} 个字符

转载 作者:行者123 更新时间:2023-12-01 10:44:36 26 4
gpt4 key购买 nike

我有一个 Visual Studio 2013 MVC Razor 项目,我正在通过浏览 w3schools.com 上的示例之一来研究该项目.

在关于 ASP.NET MVC Security 的章节中,您将在 Models 类中看到默认文件 AccountModels.cs,每个 Password 字段均包含以下文本:

    [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; }

我熟悉 String.Format,其中参数必须从 0 开始递增。

然而,上面的第 2 个参数跳转到了 2,并且似乎没有足够的参数传递给字符串。

在学习项目时,我会尽我所能自定义功能(如字符串响应)以更好地加强我的学习。

这是怎么回事?

pictures rock

最佳答案

StringLengthAttribute class constructor

我们基本上是在调用类的构造函数:

StringLengthAttribute 是一个类,它的构造函数有一个名为 maximumLengthint 参数

它还有一些属性:

  • ErrorMessage 类型为 string
    • 在我们的例子中是字符串:“{0} 必须至少有 {2} 个字符长。”
  • ErrorMessageResourceName 类型为 string
    • 在我们的例子中,我们不赋予它任何值(value)
  • ErrorMessageResourceType 类型 System.Type
    • 在我们的例子中,我们不赋予它任何值(value)
  • MinimumLength 类型 int
    • 在我们的例子中,我们给它赋值 6

ErrorMessageResourceName 字符串与其他属性(目前)没有任何关系,所以它不是这样的:

String.Format("一些变量 {0} 和一些其他 {1}...", 100, 6)

所以数字 100 和属性 MinimumLength = 6 根本没有(尚未)发送的参数被格式化为字符串 “{0} 的长度必须至少为 {2} 个字符。”

StringLengthAttribute 类也有一些方法,其中之一叫做 FormatErrorMessage

此方法在内部调用以格式化消息,它在内部使用 String.Format 格式化字符串,这里是将参数传递给要正确格式化的字符串。

  • {0} 绑定(bind)到 DisplayName
  • {1} 绑定(bind)到 MaximumLength
  • {2} 绑定(bind)到MinimumLength

这是内部调用的方法(如果你想知道它在内部是如何调用的):

/// <summary>
/// Override of <see cref="ValidationAttribute.FormatErrorMessage"/>
/// </summary>
/// <param name="name">The name to include in the formatted string</param>
/// <returns>A localized string to describe the maximum acceptable length</returns>
/// <exception cref="InvalidOperationException"> is thrown if the current attribute is ill-formed.</exception>
public override string FormatErrorMessage(string name) {
this.EnsureLegalLengths();

bool useErrorMessageWithMinimum = this.MinimumLength != 0 && !this.CustomErrorMessageSet;

string errorMessage = useErrorMessageWithMinimum ?
DataAnnotationsResources.StringLengthAttribute_ValidationErrorIncludingMinimum : this.ErrorMessageString;

// 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);
}

引用资料:

  • Microsoft 引用源 here
  • Stackoverflow 上的一个类似问题:“stringlength 属性 errormessage 需要哪些参数?” here
  • StringLengthAttribute 类 几乎无用的 msdn 文档 here

关于asp.net-mvc - {0} 的长度必须至少为 {2} 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com