2012-02-16 18 views
6

मैं रेजर के साथ ईएफ 4 + एमवीसी 3 का उपयोग कर रहा हूं।ईएफ एमवीसी रेजर: आंशिक दृश्य आउटपुट के HTML एनकोडेड स्ट्रिंग को कैसे डीकोड करें?

मेरे पास निम्नलिखित ActionResult है, जो एक आंशिक दृश्य में Dictionary<string,string> प्रस्तुत करता है।

कार्रवाई

public ActionResult combotest() 
{ 
    Dictionary<string, string> r = new Dictionary<string, string>(); 
    r.Add("<> ''", "T"); 
    ... 
    return PartialView("_mypartial", r); 
} 

अब, विशेष वर्ण Model.Key मूल्यों में निहित एचटीएमएल एन्कोड रहे हैं, जबकि मैं उन्हें सादा पाठ के रूप में उपयोग करना चाहते हैं। उदाहरण के लिए <> ''&lt;&gt; &#39;&#39; के रूप में प्रस्तुत किया गया है।

आंशिक दृश्य (_mypartial):

<select> 
    <option value=''></option> 
    @foreach (KeyValuePair<string,string> value in (Dictionary<string, string>)Model) 
    { 
     <option value="@WebUtility.HtmlDecode(value.Key)">@value.Value 
    </option> 
    } 
</select> 

क्या आप मेरी मदद कर सके

मैं सफलता के बिना WebUtility.HtmlDecode या Server.HtmlDecode साथ उन्हें बदलने की कोशिश की? यदि संभव हो तो मैं String.Replace का उपयोग करने से बचूंगा।)

<select> 
    <option value=''></option> 
     @foreach (KeyValuePair<string,string> value in (Dictionary<string, string>)Model) { 
     <option value="@Html.Raw(value.Key)">@value.Value 
    </option> 
    } 
    </select> 

Html.Raw (एक HtmlString उदाहरण है कि मूल स्ट्रिंग लपेटता रिटर्न:

+0

क्या आप निर्दिष्ट कर सकते हैं कि अन्य दो दृष्टिकोणों के साथ क्या गलत हुआ? – linkerro

उत्तर

18

पाठ unencoded आप @Html.Raw(value.key)

+0

बहुत बहुत धन्यवाद जेम्स! – Larry

2

लैरी,

उपयोग कर सकते हैं इस कोशिश को प्रदर्शित करने के। रेजर इंजन जानता है कि एचटीएमएलस्ट्रिंग उदाहरणों से बचने के लिए नहीं, इस प्रकार डिस्प्ले इरादे के रूप में है।

+0

बहुत बहुत धन्यवाद जिम! मैंने जेम्स के जवाब को स्वीकार किया क्योंकि यह पहला था। +1 THX – Larry

+1

कोई चिंता नहीं - इस तरह मैं इसे भी खेलूंगा;) –

0

पहले स्थान पर 'स्ट्रिंग' का उपयोग न करने पर विचार करें, बल्कि IHtmlString, उदाहरण के लिए HtmlString के साथ।

उदाहरण के लिए:

public ActionResult combotest() { Dictionary<IHtmlString, string> r = new Dictionary<IHtmlString, string>(); r.Add(new HtmlString("<> ''"), "T"); ... return PartialView("_mypartial", r); }

<select> <option value=''></option> @foreach (KeyValuePair<IHtmlString,string> value in (Dictionary<IHtmlString, string>)Model) { <option value="@value.Key">@value.Value </option> } </select>

अब, आप दृश्य के बीच एक अंतर्निहित सुरक्षा अनुबंध (Html.Raw प्रयोग करके) और नियंत्रक पर भरोसा करने की जरूरत नहीं है (उपलब्ध कराने के पाठ उम्मीद है कि सुरक्षित है)। आप वैध, सुरक्षित एचटीएमएल प्रदान कर रहे हैं और इसे स्रोत से चिह्नित कर रहे हैं।