1. ホーム
  2. c#

[解決済み] MaxLength 属性でクライアント側の検証属性が生成されない

2023-05-07 23:43:22

質問

ASP.NET MVC3のクライアントサイドの検証で、不思議な問題があります。私は以下のクラスを持っています。

public class Instrument : BaseObject
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Name is required.")]
    [MaxLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
    public string Name { get; set; }
}

私の見解から

<div class="editor-field">
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>

そして、このフィールドのテキストボックスのために生成されたHTMLは次のとおりです。

<input class="text-box single-line" data-val="true" data-val-required="Name is required." id="Name" name="Name" type="text" value="">

が表示されない MaxLengthAttribute は見当たりませんが、他はすべて動作しているようです。

何が間違っているのか、何か思い当たることはありますか?

どのように解決するのですか?

を使用してみてください。 [StringLength] 属性を使ってみてください。

[Required(ErrorMessage = "Name is required.")]
[StringLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
public string Name { get; set; }

これは検証のためのものです。もし、入力にmaxlength属性などを設定したい場合は、カスタムデータアノテーションのメタデータプロバイダを以下のように記述します。 この投稿に示されている をカスタマイズして のデフォルトテンプレート .