この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19676|答える: 2

[ヒント] MVCメタデータ、ViewData.ModelMetadata

[リンクをコピー]
掲載地 2017/06/28 21:12:49 | | | |

モデルメタデータは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クラスは、プロパティ値かフィールド値を隠し入力要素としてレンダリングすべきかを示すプロパティを表します




先の:[A]MySql.Data.MySqlClient.MySqlConnection は [B]MySql.Data.MySqlC... にキャストできません...
次に:未捕獲タイプエラー:未定義のプロパティを「unobtrusive」に設定できません
 地主| 掲載地 2017/06/28 21:14:05 |
モデルメタデータ



 地主| 掲載地 2017/12/01 16:53:12 |


プロパティコードを取得するためのViewData:

ViewDataDictionary viewData2=new ViewDataDictionary(ViewData["Test"]);
viewData2.ModelMetadata.Properties;
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com