42

Html.ActionLink を使用するときはいつでも、常に Html が表示文字列をエンコードします。たとえば、リンクを次のように表示します。

<a href="/posts/422/My-Post-Title-Here">More&hellip;</a>

次のように出力されます: More…

&hellip は "..." です。

ただし、actionlink は実際のテキスト「…」を出力します。リンクテキストとして。これを出力したい場合、私は同じ問題を抱えています:

<a href="/posts/422/My-Post-Title-Here"><em>My-Post-Title-Here</em></a>

< em >My-Post-Title-Here</em> で終わります

これを行う方法はありますか?

4

5 に答える 5

80

ActionLink は常にリンク テキストで HttpUtility.Encode の呼び出しを使用しているようです。UrlHelper を使用して href を生成し、アンカー タグを自分で作成することができます。

<a href='@Url.Action("Posts", ...)'>More&hellip;</a>

または、ActionLink に渡す文字列を「デコード」することもできます。HTML でリンクを作成すると、(私にとっては) 少し読みやすいように思えます (特に Razor では)。以下は、比較のための同等のものです。

@Html.ActionLink(HttpUtility.HtmlDecode("More&hellip;"), "Posts", ...)
于 2009-01-08T02:00:10.680 に答える
10

サムの答えは実際には正しいので、自分のソリューションで使用したので、自分で試してみました。余分な括弧を削除すると、次のようになります。

@Html.ActionLink(HttpUtility.HtmlDecode("&amp;"), "Index", "Home")
于 2012-04-13T18:24:08.840 に答える
7

または、単純な Unicode 省略記号 \u2026 を使用して、MVC にエンコード方法を任せます。特に説得力のある理由がない限り、文字参照ではなく、単に文字を単純な UTF-8 バイトとして含めるのではなく、hellip エンティティ参照が特に必要になります。

別の方法: ピリオドを 3 つ使用します。省略記号 (U+2026) は互換文字であり、Unicode より前のエンコーディングに往復するためにのみ含まれています。単純なドットに比べて、ほとんど得られません。

于 2009-01-08T02:18:46.383 に答える
6

これをチェックしてください:

  <p>Some text   @(new HtmlString(stringToPaste)) </p>
于 2012-04-30T18:38:37.323 に答える
4

値を渡す前にデコードします。これと同じ問題 (異なる文字) があり、正常に動作します。

例えば:

@Html.ActionLink(HttpUtility.HtmlDecode(_("&amp;")), "Index", "Home")

迷惑だけど

于 2011-08-19T02:01:21.080 に答える