レスポンシブ Web サイトに MVC を使用する場合は、次のとおりです。
私は主に ASP.NET WebForms であるサイトに取り組んでおり、レスポンシブ マークアップを使用するように再設計中です。すべてを MVC に変換するのは現実的ではないため、既存のコントロールで間に合わせる必要があります。
特定のフォーム ページで、同じ行に 2 つのコンボ ボックスがあります。48%
これらには、親要素の幅を指定するように適切に設定された CSS クラスがあります。問題は、asp:DropDownListを使用しているため、CSS クラスで設定された幅をオーバーライドするstyle
を持つ属性でコントロールがレンダリングされることです。width:275px;
これらの DropDownLists (特にRenderChildren
メソッド オーバーライド)を含む複合コントロールの分離コードで[control].Style.Clear();
、基本メソッドを呼び出す前に呼び出しを試みました。これは効果がありません。追加しても:
[control].Style.Add(HtmlTextWriterStyle.Width, "inherit");
要素は次のようにレンダリングされます。
<select style="width:275px;width:inherit;" class="input-half first" id="longAndComplicated" name="longAndComplicated">
2 つの宣言に注意してください。理想的には、最初から属性width
が存在しないようにする必要があります。style
ソースでReflectorを突き刺しましたが、このハードコーディングされた幅がどこに設定されているかを見つけることができませんでした。スタイル セッターは、ASP.NET 階層のさらに上のどこかからコピーされているようです。
幸運な推測として、私は試しました:
Width
で空の文字列に設定すると<asp:DropDownList>
(「継承」により解析エラーが発生します)- 明示的に指定する
Width="48%"
- 設定
EnableTheming="false"
これらのいずれもプラスの効果はなく、renderedstyle
属性にはまだwidth:275px;
.
この幅は魔法のようにどこから設定されていますか? 理想的には、から継承する派生クラスを作成することなく、この動作をオーバーライドするにはどうすればよいSystem.Web.UI.WebControls.DropDownList
ですか?
どうもありがとう。