2013-02-15 1 views
7

:私はそれを使用する場合レイザー - @ Html.Raw()まだメタタグに&をコードする属性私は、@ Html.Raw(のMyString)を使用する場合、通常、それが適切に例レンダリング

@{ ViewBag.Title = "My Site®"; } 
<title>@Html.Raw(ViewBag.Title)</title> 

が正しく<title>My Site&reg;</title>をレンダリングしますが属性に:

<meta name="description" content="@Html.Raw(ViewBag.Title)" /> 

それはそれは、登録マークを表示されませんので、正しくない<meta name="description" content="My Site&amp;reg;" />をレンダリングします。

どのようにこの動作を修正しますか?

+0

重複:http://stackoverflow.com/questions/11963453/why-is-html-raw-escaping-ampersand-in-anchor-tag -in-asp-net-mvc-4およびhttp://stackoverflow.com/questions/12321616/why-is-mvc-4-razor-escaping-ampersand-when-using-html-raw-in-a-title -attribute –

+0

@ Ek0nomikそれは誰もその問題を解決しなかったので、実際には重複していません。彼らは、文字列にタグ全体をロードすることを提案しており、それはすべてのページで愚かなことです。 – ddilsaver

+0

上記の2番目の質問に示すように、属性名を '.Raw'のパラメータに含めることができます。これはバグであるため、回避する必要があります:http://aspnetwebstack.codeplex.com/workitem/393。 –

答えて

6

答えがpatridge pointedの場合、アトリビュートマークアップをパラメータに含めて、.Rawにすることができます。あなたの_layout.cshtmlでこれを行うことができます

<meta name="description" @Html.Raw("content=\"My Site&amp;reg;\"") /> 
+0

厄介に見えますが、動作します – krzychu

+1

@Justin Helgersonこれが私が動作させた唯一の方法です。 –

0

::これは私のために働いた

<title>@{var title = new HtmlString(ViewBag.Title);}@title</title> 

次のようなものになるでしょう、あなたの場合は

0

私はそれが先端トップソリューションだと思う:

@{ ViewBag.Title = "My Site&reg;"; } 
<title>@Html.Raw(ViewBag.Title)</title> 
<meta name="description" content="@HttpUtility.HtmlDecode(ViewBag.Title)" /> 
関連する問題