ユーザーが使用しているブラウザに応じて、css ファイルを条件付きで含めようとしています。そして、私はそれを 1 つの方法で動作させることができましたが、追加のスタイル シートが必要になるため、希望どおりには動作しませんでした。その仕組みとして、Site.Master ファイルに ie8 のスタイル シートを含めます。
<link href="~/Styles/ie8.css" rel="Stylesheet" type="text/css" />
次に、関数内の Site.Master.cs でPage_Load
。
if (!(browser.Type == "IE8" ||
browser.Type == "IE7" ||
browser.Type == "IE6" ||
browser.Type == "IE5"))
{
Page.Header.Controls.Add(new LiteralControl(
"<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie.css") + "\" />"));
}
これは機能し、css は正しく、開発者ツールと互換性を ie10 で使用すると、正しい css が含まれていることがわかります。しかし、コードを同等のものに変更すると。うまくいきません。Site.Master:
<link href="~/Styles/ie.css" rel="Stylesheet" type="text/css" />
Site.Master.cs
if ((browser.Type == "IE8" ||
browser.Type == "IE7" ||
browser.Type == "IE6" ||
browser.Type == "IE5"))
{
Page.Header.Controls.Add(new LiteralControl(
"<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie8.css") + "\" />"));
}
にブレークポイントを設定するPage.Header.Controls.Add
と、ie10 の互換モードで関数が呼び出されていることがわかります。しかし、開発ツールに移動して、ie8.css で定義されたクラスを使用する要素を探すと、含まれていなかったようにそこにありません。ここで何が起こっているのですか?