2件あるから2件表示。ロールも表示されますね。テーブル見てみましょう。カラムも追加されてるし、値も入ってる~。文字列にしてるのはパースしやすいのと、パッと見データ見ただけでわかるからっていうだけの理由です。intがよければそのように。いいんじゃないでしょうか。packages含んじゃってるのでちょっと大きいですがご容赦を。MVCのDefaultModelBinderにはResourceClassKeyっていうプロパティがあって、そこに自作リソースを指定して、文字列リソースのキー名にPropertyValueInvalid/PropertyValueRequiredっていうのを作っておくと、アプリケーション全体にその文字列が適用される。Invalidは動作するけどRequiredがぜんぜん適用されません!っていう内容なんですね。これ質問もなかなか面白いからか、特別ポイントが付与される質問だったんです。張り切って思ってソース追っかけたりしながら動作を見てみたわけですよ。したら確かにInvalidはメッセージの置き換えができるのにRequiredは置き換えがおきない。"Messages";}なんでかな~、と調べてみたらDataAnnotationsのRequiredAttributeなんかは内部で参照するリソース名を固定で保持してて、DefaultModelBinderのほうの設定を参照しないんですね。MVCならできる方法がありそうな気がするんですよね。これだけ拡張ポイントたくさんあるんだから。見ていくとちゃんと用意されてるのを発見しました。DataAnnotationsDataAnnotationsModelValidatorProvider.RegisterAdapterでValidationAttributeの型ごとにAdapterを指定できるんです。このAdapterのコンストラクタにはValidationAttributeクラスのインスタンスがわたってくるんですが、このAdapterを経由させてから、MVCはエラーメッセージを生成したりするので、AdapterのコンストラクタでインスタンスプロパティのErrorMessageResourceTypeとErrorMessageResourceNameを書き換えてあげれば、アプリケーション全体のメッセージを変更できるっていう仕組みです。分かりやすいやり方としてはね、カスタムValidationAttributeを作って、ErrorMessage~の設定を上書いておくか、Modelに指定するときに属性プロパティに指定する方法なんだと思うけど、それだと属性を指定する箇所がすごい数になっちゃうじゃないですか。それでもいいけど、そうじゃなく一括して変更したいっていうのが質問の内容じゃないですか。サンプル書いて返信したんですよ。typeof(MyRequiredAttributeAdapter));}↑こう書けばカスタムできるよ!って。!なのになのに!カスタムValidationAttributeを作るほうに特別ポイントが!!ガッカリデス。過ぎてスネ毛が少し抜けたよ...。いう一括していの方法があることを知らなかったので、勉強になりました。C#WebActivatorでお手軽Bootstrapperいろんなセッションビデオやサンプルコードによく登場してるWebActivator。属性指定のしかたから、.NET4で登場したPreApplicationStartMethod(AssemblyInfo.csに指定するやつ)に関する何かだろうと勝手に解釈して、ちゃんと見てなかったんだけど、なんか急に見てみたくなった。Blogs解釈はおおむね間違ってないんだけど、PreAppricationStartMethodだと1個しか指定できない(よね?)のと、フックポイントが起動直後しかない(そりゃそうだ)のを拡張してしまおうというものでした。Pre/Post/Shutdowの3箇所に仕込めるんですね。PreApplicationStartMethodPostApplicationStartMethodApplicationShutdownMethodこの3種類。うまいこと考えてますね。PreとPostはAOPっぽい感じです。使って動的にロードする初期化HttpModule(これ自体ちゃんとWebActivatorに含まれてるので気にすることは無いですね)のInitイベントで実行。ShutodownはそのHttpModuleのDispose時に実行。config面白いですね。アセンブリ属性にしてるのは使い勝手を考慮してのことでしょう。"実行メソッド名")]こんな感じでアセンブリ内に宣言します。いくつ宣言してもいいです。ActivationManager(これが標準のPreApplicationStartMethodで指定されてるよ)が実行時にbinフォルダのアセンブリから全部抽出してくれます。BitbucketオレオレBootstrapperを卒業するときがきましたね!注意点として、HttpModuleを利用するPostとShutdownはAppDomainがロードされなおすたびに実行されるので、何度も実行されるのでその辺気をつけましょう。タイプしてインストールしてみて以下のコードで動かしてみました。Expressを指定して実行してみます。コンソールのスクリーンショットを取りたかったからデス!これって統合されたらどこで見ればいいんだろか。出力ウィンドウだとちょっと違うじゃん?ん~。