0

次のコードでは、postSummary.SEOFriendlyTitleInURL に中国語の文字が含まれている場合、それらの文字は URL でエンコードされます。

@Html.ActionLink(
    postSummary.Title,
    "View",
    new
    {
        id = postSummary.Id,
        friendlyTitle = postSummary.SEOFriendlyTitleInURL
    })

その URL は、Google Chrome および Firefox では元の文字として表示されますが、IE ではエンコードされた文字列です。エンコードされていない文字をアドレスバーに直接入力できるため、ActionLink メソッドのデフォルトのエンコード動作を防止したいと考えています。したがって、それらは URL では合法であると思います。

リンクを手動で簡単に作成できますが、一貫性を保つために生成する方がよいでしょう。

<a href="/post/@postSummary.SEOFriendlyTitleInURL/@postSummary.Id">@postSummary.Title</a>

編集:

私の現在の解決策: フレームワークが非 ASCII 文字だけをエンコードするのを防ぐ代わりに、Server.UrlDecode メソッドと組み合わせた Html.ActionLink を使用して、文字をエンコードしないように指示します。パーセントでエンコードする必要がある文字がある場合、それらは「friendlyTitle」フラグメントにのみ表示されます。そのフラグメントは読みやすさのためにのみ使用されるため、そのような文字をダッシュ​​文字に置き換えます。

そのような置き換えられた文字を含む

それでも、ASCII 以外の文字は URI では有効ではないため、ある時点でパーセント エンコードする必要があります。URL の生成時に行うことをお勧めします。しかし、漢字を含む URL を介してページを要求するときに Fiddler を観察すると、URL は自動的に (おそらく Web ブラウザーによって) エンコードされるようです。読みやすくするために、Web ブラウザーにエンコード作業を行わせることにしました。

4

1 に答える 1

0

<a>タグで生成されるものに関しては、ブラウザ間に違いはありません。唯一の違いは、ブラウザでの表示方法です。ここでは何も変更する必要はありません。Html.ActionLink()正しくエンコードされているか、エンコードされていません。

于 2012-09-05T12:28:27.503 に答える