3

これは奇妙です。IE 8以降(およびFF)でHtml.ActionLink()によって生成されたURLが正しい形式でURLを作成するため、私は奇妙だと言います-> http://mydomain.com/myapp/mycontroller/myaction しかしIE 7ではおよび互換モードで実行されている IE8 では、URL は -> http:///myapp/mycontroller/myactionとして生成されます。これは、Url.Content() を使用するすべてのものにも影響します。

これは懸念事項です。ユーザーがまだ IE 7 をずっと使い続けているからです (私もわかりません)。さらに、Active Directory ポリシーには一部の (すべてではない) ユーザー向けの設定が含まれているため、IE 8 は強制的に互換モードになり、無効にすることはできません。また、互換性メタ タグをオーバーライドします。

ここで MVC 内で何を確認する必要がありますか? 確認する必要がある web.config 設定はありますか?

コード: アクション リンク:

@Html.ActionLink("My Text", "Action", "Controller", new { Param1 = Model.Param1 }, new { @class = "linkButton" })

Url.Content:
Url.Content("~/Content/openHS.png")

更新: PHP でこの問題を扱っている同様の項目を見つけました: Why can't I use relative URLs with IE7?

ヘッダータグを使用して言及されたウェブ上の他のいくつかの記事<base>..今これを試しています。検索「相対 URL」「Internet Explorer 7」を使用

4

1 に答える 1

1

これは機能します。互換モードの IE 8 を使用した WinXP モードと、Internet Explorer 8 IE 7 モード、IE 9、IE9 Compat、FF 11 でテストしました。既存の JavaScript に害はありません。

かみそりの場合:

@{
     string baseHref;

     if(this.Request.Browser.Type == "IE7" && !this.Request.UserAgent.Contains("Trident/5.0"))
     {
          baseHref = this.Request.Url.Scheme + "://" + this.Request.Url.Authority + Url.Content("~");
     }
     else 
     {
          baseHref = Url.Content("~");
     }
}

次に、の上部に<head>

<meta http-equiv="X-UA-Compatible" content="IE=9;IE=8;" />
<meta charset="utf-8" />
<base href="@(baseHref)"/>

上記の 1 つの説明: Trident/5.0 は IE 9 の互換エンジンであり、IE9 がベースではなくページ ドメインに従って相対リンクを解釈できるように思われます。必要に応じて、Razor コードを削除できると確信しています。これは私にとっての互換性パッチでした。

于 2012-04-12T13:16:08.947 に答える