モデルメタデータはMVCにおいて重要な概念であり、モデルの種類、モデルに含まれる属性、存在する属性の種類、属性に記載される特徴などが含まれますが、これらに限定されません。
MVC3.0 ASP.NET、デフォルトモデルメタデータDataAnnotationsModelMetadataはModelMetadataから継承しています(さらに、システムはデフォルトのモデルメタデータプロバイダーDataAnnotationsModelMetadataProviderも提供しています)
public class DataAnnotationsModelMetadata : ModelMetadata
その構成要素は以下の通りです
public DataAnnotationsModelMetadata(DataAnnotationsModelMetadataProvider provider, Type containerType, Func modelAccessor, Type modelType, string propertyName, DisplayColumnAttribute displayColumnAttribute);
DataAnnotationsModelMetadataクラスには、いくつかの一般的に使われるプロパティがあります
DisplayName表示名、DisplayFormatString形式文字列
TemplateHintはどのテンプレートを使うか選ぶための値を付与します
DisplayNameの場合、LabelFor<TModel、TValue>メソッドはこのプロパティを使ってラベルテキストを生成します。 ということですモデル上でDispalyNameプロパティが定義されたら、viewでhtml.editForModel()メソッドを使いますこのモデルの属性に対して、ラベルタグ「<label for="username">名前</を自動的に表示します</label>。
[display( name="name", order=2)] //order属性はHTMLページの順序を変更します 公開文字列ユーザー名 { get; セット; }
HTMLソースコード:
ユーザー名属性に使われるDisplayプロパティはSystem.ComponentModel.DataAnnotations.DisplayAttributeクラスで、エンティティ分割クラスの型とメンバーに対してローカライズ可能な文字列を指定できる汎用機能を提供します
System.Web.MVCやSystem.ComponentModel.DataAnnotationsの機能もあり、これらはすべてXXXXAttributeに似たフィーチャークラスで、それぞれに特定の使用範囲があり、モデルプロパティを制限するもの、Contrllerを制限するもの、アクションを制限するものなどがあります。
以下は、これら2つの名前空間に組み込まれ、一般的に使われている特徴クラスの一覧です
1) System.Web.MVC 空間
AcceptVerbsAttribute、ActionFilterAttribute、ActionNameAttribute、AsyncTimeoutAttribute、AuthorizeAttribute、BindAttribute、
HiddenInputAttribute
ActionFilterAttributeは、すべてのアクションフィルタープロパティの基底クラスを表します
HttpDeleteAttributeクラスは、操作メソッドがHTTP DELETEリクエストのみを処理するように制限するプロパティを表します
HttpGetAttribute(HttpPostAttribute)は、操作メソッドをPUTリクエストのみを処理するように制限するHttpPostAttribute属性です
HttpPutAttributeは、操作メソッドがHTTP PUTリクエストのみを処理するように制限するためのプロパティを表します。
例:ActionNameAttributeはアクションの実際のアクション名を指定し、その使用方法は以下の通りです
[ActionName()]
公開アクション結果索引()
例:HiddenInputAttributeクラスは、プロパティ値かフィールド値を隠し入力要素としてレンダリングすべきかを示すプロパティを表します |