10

次のようなアクションがあります。

<%=Html.ActionLink("My_link", "About", "Home", new RouteValueDictionary { 
    { "id", "Österreich" } }, null)%>

これにより、次のリンクが生成されます: http://localhost:1855/Home/About/%C3%96sterreich

次のようなリンクが必要です - localhost:1855/Home/About/Österreich

私が試してみました。

Server.HtmlDecode("Österreich")
HttpUtility.UrlDecode("Österreich") 

どちらも役に立っていないようです。希望する結果を得るために、他に何を試すことができますか?

4

4 に答える 4

4

これはブラウザ(IE)の問題だと思います。

あなたのコードはそのままで正しいです。明示的な UrlEncoding は必要ありません。

<%=Html.ActionLink("My_link", "About", "Home", new RouteValueDictionary { 
{ "id", "Österreich" } }, null)%>

ASP.NET MVC には何の問題もありません。Web 上のユニコード URL を参照してください。 URL が正しい。

たとえば、chrome は Unicode URL を問題なく表示します。IE は、アドレス バーの「特殊な」Unicode 文字をデコードしません。

これは見た目だけの問題です。

于 2010-04-09T18:46:12.773 に答える
2

RFC 1738 Uniform Resource Locators (URL)によると、US-ASCII のみがサポートされており、他のすべての文字はエンコードする必要があります。

2.2. URL Character Encoding Issues

URLs are sequences of characters, i.e., letters, digits, and special

文字。URL はさまざまな方法で表すことができます。たとえば、紙にインクを塗ったり、コード化された文字セットの一連のオクテットを使用したりします。URL の解釈は、使用される文字のアイデンティティのみに依存します。

In most URL schemes, the sequences of characters in different parts of a

URL は、インターネット プロトコルで使用される一連のオクテットを表すために使用されます。たとえば、ftp スキームでは、ホスト名、ディレクトリ名、およびファイル名は、URL の一部で表される一連のオクテットです。それらの部分の中で、オクテットは、US-ASCII [20] コード化文字セット内のコードとしてそのオクテットを持つ文字で表すことができます。

In addition, octets may be encoded by a character triplet consisting of

文字「%」の後に、オクテットの 16 進数値を形成する 2 つの 16 進数 (「0123456789ABCDEF」から) が続きます。(文字 "abcdef" は、16 進エンコーディングでも使用できます。)

Octets must be encoded if they have no corresponding graphic

対応する文字の使用が安全でない場合、または対応する文字が特定の URL スキーム内の他の解釈のために予約されている場合、US-ASCII コード化文字セット内の文字。

No corresponding graphic US-ASCII:

URLs are written only with the graphic printable characters of the

US-ASCII コード化文字セット。16 進数の 80 ~ FF のオクテットは US-ASCII では使用されず、16 進数の 00 ~ 1F および 7F のオクテットは制御文字を表します。これらはエンコードする必要があります。

于 2010-04-09T18:46:34.393 に答える
1

urlencode 以外の URL に対するあなたの希望は有効だと思いますが、ツールが実際にこれを簡単に行うとは思いません。

于 2010-04-09T18:36:23.027 に答える
0

生成されたリンクを 内<a>に配置し、リンク テキストをエンコードされていない文字列にするだけでは不十分でしょうか? ブラウザーの URL フィールドではまだ見栄えが悪くなりますが、UI は少しきれいになります。

また、とにかく Firefox では、「醜い」リンクにマウスを重ねたときにステータス バーに表示される URL は、エンコードされていないバージョンを示しているため、おそらくそこでも問題なく表示されます。

于 2010-04-09T18:44:42.943 に答える