次の寸法を入力するオプションがあるフォームがあります。
- 幅高さ
- 幅
- 身長
そして、3 つのオプションのどれが選択されているかに応じて、非表示/表示する 2 つのコンテナー div があります。
<div class="editor-field" id="width-container">
@Html.EditorFor(model => model.Width)
@Html.ValidationMessageFor(model => model.Width)
</div>
<div class="editor-field" id="height-container">
@Html.EditorFor(model => model.Height)
@Html.ValidationMessageFor(model => model.Height)
</div>
高さが選択されている場合、幅はフォームに表示されません。ユーザーが気が変わった場合、つまりデータを削除した場合に簡単に復元できるように、幅入力フィールドの控えめな検証を無効にするにはどうすればよいですか?属性はオプションではありません。これを処理するために CustomAttribute クラスを作成できてうれしいですが、新しいバージョンへの更新が後で頭痛の種になるため、これを機能させるために標準の jquery ファイルをハックする必要はありません。他のすべてが失敗した場合は、フィールドが表示されていないときにフィールドに値 0 を追加し、表示されているときにフィールドを削除するという通常のトリックを使用します。
編集:
Width が表示されない場合、それ自体は「隠し」フィールドではなく、親 div のスタイルが display:none であるため、ユーザーには表示されない単なる入力タグであることに注意してください。