問題タブ [foolproof-validation]
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.
asp.net-mvc-5 - カスタム入力のリスト内の要素の requiredif
ICustomInput 値のリストを含むモデルビューがあります
ICustomInput の例
これの目的は、ログインしているクライアントがフォームで要求したカスタム入力フィールドに関する情報を DB から取得できるようにすることです。あるクライアントはいくつかのテキスト フィールドを必要とし、別のクライアントはドロップダウンを必要とする場合があります。これらのカスタム フィールドは、入力が必要な場合と必要でない場合があります。(CustomField オブジェクトは、dataLayer によって返される古いオブジェクトであり、頻繁に使用されます。再構築したくありませんが、文字列でいっぱいであると仮定します)
ICustomInputs の具体的な実装用のエディター テンプレートと、投稿時にデータを取得できるカスタム バインダーがあります。しかし、私が抱えている問題は、RequiredIf 属性が、すべての ICustomInputs に対してクライアント側の検証に対して目立たないデータ値を同じに設定していることです。それらはすべて依存プロパティに同じ名前を持っているので理にかなっていますが、私が抱えている問題は解決しません。
私のビューは、単純に ICustomInput のリストを表示します:
次に、ICustomInput を実装する各具象型には、次のような独自の editorTemplate があります。
結果の HTML は次のようになります。
非表示フィールドには適切な名前が付けられていますが、属性を取得して data-val-requiredif-dependent プロパティを非表示フィールドの実際の ID/名前に設定するにはどうすればよいですか?
現在、リスト用のカスタム エディター テンプレートを持っていません。持っていましたが、データを正しくバインドすることができませんでした。List にエディター テンプレートをドロップし、ICustomInput の具体的な実装用に独自のエディター テンプレートを作成すると、必要なすべての UI レイアウト コントロールが得られ、データが正しくバインドされましたが、クライアント側の検証を適切に機能させることができません。それが単なるエディター テンプレートである場合、どのように見えるでしょうか?
アップデート
これは修正ですが、私は好きではありません。スタイルを適用するために入力を介して .each を既に実行している JavaScript があるため、これを .each に追加しました。
それは問題を解決しますが、解決するのがjsの責任である問題であるべきではないと思います。そして、これは非常に卑劣な修正であるため、将来このコードに取り組もうとする他の人をつまずかせる可能性があります。まだまだいい方法を見つけていきたいです。