Skip to content

DataAnnotations のエラーメッセージの複合書式指定 ({0} {1} と書くやつ) の対応について #136

Closed
@onodera-sf

Description

@onodera-sf

お世話になります、おのでらです。

実装されているかどうかが調べても分からなかったので要望として書かさせていただきます。(すでに実装されているのであればすみません)

ViewModel のプロパティを ReactiveProperty で実装しているのですが、値の検証に DataAnnotations を使用しています。その際、以下のようにエラーメッセージに名称部分を任意に設定したいと思っております。

[Required(ErrorMessage = "{0} は必須")]
[Display(Name = "Child Name")]
public ReactiveProperty<string> Name { get; set; }

ASP.NET MVC の場合は {0} の部分にプロパティ名、または Display 属性を指定していればその名称がメッセージに反映されるのですが、ReactiveProperty では「Value」と表示されてしまいます。

また、上記は文字列を直接入力していますが、Resx を使用したいので以下のように設定した場合でも複合書式指定を反映させたいです。

[Required(ErrorMessageResourceType=typeof(MyApp.Resources), ErrorMessageResourceName="Required")]
[Display(Name = "Name", ResourceType = typeof(MyApp.Resources))]
public ReactiveProperty<string> Name { get; set; }

ViewModel のコンストラクタで

NameValidate = Name.ObserveErrorChanged
  .Select(x => x?.Cast<string>()?.FirstOrDefault())
  .ToReadOnlyReactiveProperty();

の箇所をうまく調整すればいけるのではと思ったのですがどう記述すればスマートなのか分からなかったので公式の見解をいただきたいと思います。
よろしくお願いします。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions