2013-02-15 49 views
7

जब मैं का उपयोग @ Html.Raw (mystring) सामान्य यह ठीक से उदाहरण प्रस्तुत करता है:उस्तरा - @ Html.Raw() अभी भी मेटा टैग में & एन्कोडिंग विशेषताओं

@{ 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 -इन-एएसपी-नेट-एमवीसी -4 और http://stackoverflow.com/questions/12321616/why-is-mvc-4-razor-escaping-ampersand-when-using-html-raw-in-a-title -ट्रिब्यूट –

+0

@ Ek0nomik यह वास्तव में एक डुप्लिकेट नहीं है क्योंकि किसी ने भी उस प्रश्न का समाधान नहीं किया है। वे सुझाव हैं कि स्ट्रिंग में पूरे टैग को लोड किया गया था और यह हर पृष्ठ पर बेवकूफ है। – ddilsaver

+0

आप उपरोक्त लिंक किए गए दूसरे प्रश्न में दिखाए गए अनुसार 'राउ' में पैरामीटर में विशेषता नाम शामिल कर सकते हैं। आपको एक काम करना होगा क्योंकि यह एक बग है: http://aspnetwebstack.codeplex.com/workitem/393। –

उत्तर

6

patridge pointed के रूप में बाहर अपने जवाब में आप सिर्फ .Raw के पैरामीटर में विशेषता मार्कअप शामिल कर सकते हैं।

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

बुरा लगता है, लेकिन काम करता है – krzychu

+1

@ जस्टिन हेलगर्सन डीड में यह एकमात्र तरीका है जिसे मैंने इसे काम किया, धन्यवाद! –

0

आप अपने _layout.cshtml में ऐसा कर सकते हैं:

<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)" />