問題タブ [modelmetadata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
376 参照

asp.net-mvc - LinFu プロキシ オブジェクトのターゲットを見つける

これはかなり重複した質問ですが、Castle Dynamic Proxy を使用する代わりに、LinFu を使用しています プロキシ オブジェクトの基になる型を取得しています

自動マッパーを使用して、Asp.net MVC のビューモデルに送信するインターフェイスのプロキシを作成しています。私の問題は、MVC のデフォルトの MetadataProvider がモデルで .GetType() を呼び出すことによってプロパティとメタデータを見つけることができることです。

つまり、EditorFor() および DisplayFor() テンプレートはフィールドを生成しません。私がしなければならないことは、プロキシ ターゲット タイプを見つけて、テンプレートを生成することです。名前を解析して GetType( "thename" ) を使用できることはわかっていますが、簡単な方法があるかどうか疑問に思っていました。

0 投票する
3 に答える
5298 参照

asp.net-mvc - ASP.NET MVC 2 での MetadataType とクライアントの検証

継承されたプロパティと MetadataType は、ASP.NET MVC 2 のクライアント側の検証では機能しないようです。

MetadataTypes の検証はサーバー上で期待どおりに機能しますが、何らかの理由で適切なクライアント スクリプトが生成されません。クライアント側の検証は、PersonView に設定された DataAnnotations 属性を持つプロパティに対して期待どおりに開始されるため、クライアント側の検証がアクティブであり、機能することがわかります。修正できるかどうか、または修正できる方法を知っている人はいますか?

ここに私たちが持っているものがあります:

ご覧のとおり、そこには空想や奇妙なものは何もありません.修正できますか? ASP.NET MVC 2 のバグですか?

0 投票する
3 に答える
424 参照

asp.net-mvc - ASP.NET MVC / Linq-to-SQL クラス: 読み取り可能な表示名を推測できますか?

OrdersフィールドCustomerIDOrderIDおよびを含むテーブルがある場合OrderDate、「Linq-to-SQL クラス」で生成されたクラスは と呼ばれ、Ordersメンバーはおよび と呼ばれます。ここまでは順調ですね。CustomerIDOrderIDOrderDate

ただし、Html.LabelFor(m => m.OrderDate)そうすると、生成されたテキストは「注文日」ではなく「注文日」になります。

フィールド名として使用しようとしOrder_Dateましたが、うまくいきませんでした。より良い表示名を推測する方法はありますか?

[データ注釈を使用して表示名を明示的に指定できることは知っていますが、すべてのクラス/メンバーに対してそれを行いたくありません - 慣例に従って機能させたいだけです。]

0 投票する
1 に答える
1734 参照

asp.net-mvc-2 - ModelMetaData の Watermark プロパティを設定するにはどうすればよいですか?

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.htmlを読み終えたところです 記事では、ブラッドはWatermarkプロパティをリストしていますが、言及はありませんどの DataAnnotation を使用して入力するか。

0 投票する
2 に答える
591 参照

asp.net-mvc-2 - モデルとビューのコンテンツに基づいて ASP.NET MVC 2 マスター ページの JavaScript と CSS ファイルを制限する

特定の.js および .css ファイルを必要なページだけに含めたい。

たとえば、私の EditorTemplateDateTime.ascxにはファイルanytimec.jsanytimec.css.

このテンプレートは、DateTime 型の値を持つモデルのビューでEditorForまたはEditorForModelヘルパー メソッドを使用するたびに適用されます。

私のテクニック:

<head>この条件をマスター ページのセクションに入れました。ModelMetadataの DateTime型プロパティをチェックします。

これには2 つの問題があります。

  1. タイプ DateTime のネストされた子モデルがあると失敗します

  2. EditorForまたはEditorForModelメソッドのないビューによって不必要にトリガーされる(例: DisplayForModel )

このテクニックを改善するにはどうすればよいですか?

0 投票する
1 に答える
1766 参照

asp.net-mvc - ASP.NET MVC カスタム MetadataProvider

カスタム MetadataProvider を作成していますが、メソッドで実際のモデル値にアクセスしたいと考えていますCreateMetadata

現在のモデル値が文字列型の場合、モデル値は にありますmetadata.Model。ただし、モデルが参照型の場合、値は null です。

または、カスタムデータをこのメソッドに渡す方法はありますか?

0 投票する
1 に答える
1377 参照

asp.net-mvc - ModelMetadata: ShowForEdit プロパティが機能していないように見える

Iv は、以下のような MetaDataProvider を作成し、エディター テンプレートと組み合わせて使用​​しています。DisplayName は正しく機能していますが、何らかの理由で ShowForEdit の値は効果がありません。何か案は?

0 投票する
1 に答える
423 参照

asp.net-mvc-2 - metadata.HideSurroundingHtml の解決策が機能しない

HideSurroundingHtml を動的に設定するカスタム DataAnnotationsModelMetadataProvider を作成しました。

しかし、これはエディターのテンプレートによって認識されていないようです。そこで Iv は、HideSurroundingHtml を強制的に機能させようとする、ラベル用の新しい HTML 拡張メソッドを作成しました。

しかし、これは機能しません。さらに、これらにブレークポイントをアタッチすると、CreateMetadata メソッドの前に拡張メソッドにヒットしたように見えます。これは、これが機能しない理由を説明していますが、この順序で呼び出されるという事実は意味がありません。

誰でもこれを説明できますか?または、私が達成しようとしていることを達成する方法は?

0 投票する
1 に答える
627 参照

asp.net-mvc - ASP.NET MVC2: コレクション内から ModelMetadata.ContainerType を取得できますか?

DisplayFor と DisplayForModel を呼び出して、ビュー内のさまざまな要素タイプで IEnumerable<> を反復しようとしています。各要素/モデル タイプに対して定義されたテンプレートがあります。

私がしたいのは、ViewData.ModelMetadata.ContainerType をテンプレート内からチェックして、テンプレートがコレクションの一部として呼び出されたかどうかを判断できるようにすることです。

簡単な例:

Index1.aspx: Foos のコレクションをレンダリングします。

Index2.aspx: Bar から Foo をレンダリングします。

Shared\DisplayTemplates\Foo.ascx: Foo のコンテキスト対応テンプレート。

この例の問題は、ViewData.ModelMetaData.ContainerType が、Index1.aspx で解決されたときにテンプレートで null になることです。Brad Wilson の投稿などで読んだことから、IEnumerable の使用とそれがインターフェイスであることが関係しています。

ContainerType が設定されていることを確認する方法はありますか? おそらく ModelMetadataProvider を作成することでしょうか? 私は簡単に調べましたが、ContainerType の値は以前に決定されてからプロバイダーに渡されたようです。

任意の提案をいただければ幸いです。

0 投票する
1 に答える
547 参照

asp.net-mvc - MetadataTypeAttribute をクラスに直接配置する以外に、一部のクラス メタデータについて ASP.NET MVC に指示する方法はありますか?

これが現在どのように機能するかのサンプルです:

ただし、MetadataAttribute を Person クラスに配置する必要はありません。代わりに、MVC フレームワークに「Person クラスに遭遇した場合、メタデータは PersonMetadata クラスにあります」と伝える何らかの方法が必要です。

メタデータで「拡張」するために Person クラスに触れる必要がないため、私にとってより構成的であると感じる方向を逆にし、Open-Close Principle に従っているだけです。
これにより、複数の競合するメタデータが添付される可能性があり、複雑さが増しますが、柔軟性には常に代償が伴います。

プログラムによる方法または宣言的な方法、またはできれば両方が必要です:)

したがって、次のようなものになる可能性があります。

別の可能性があります: