2009-04-07 12 views
13

मैं मॉडलस्टेट का उपयोग करते समय एक अजीब समस्या को देख रहा हूं। AddModelError मेरे रूपों पर इनपुट मान्य करने के लिए। Html.ValidationMessage से आउटपुट वास्तविक HTML मान नहीं है लेकिन यह एन्कोडेड मान है और इसलिए सीएसएस शैली त्रुटि संदेश पर लागू नहीं होती है।ModelState.AddModelError एन्कोड HTML

उदाहरण:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span> 

यह उनके पहले के बीटा के साथ मामला है का उपयोग नहीं किया और मुझे यकीन है कि क्या दृष्टिकोण यहाँ लेने के लिए नहीं कर रहा हूँ:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />"; 
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required")); 

आउटपुट के रूप में दिखाया गया है।

धन्यवाद निक

उत्तर

12

अपना खुद का विस्तार किए बिना भी ऐसा करने का एक और तरीका है।

कहते हैं उदाहरण के लिए हम अपने नियंत्रकों में से एक में निम्नलिखित है:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>"); 

हम तो कर सकते हैं निम्नलिखित हमारे विचार:

@if(Html.ValidationMessageFor(x => x.Name) != null){ 
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString()) 
} 

से '<b>Please Use a Valid Person Name</b>' की त्रुटि संदेश पाएगा एन्कोड किया जा रहा है।

+1

मुझे नहीं पता कि यह एक समय में काम करता है, लेकिन मैं पुष्टि कर सकता हूं कि यह एमवीसी 3 में नहीं है। –

+13

@ एचटीएमएल.आरओ (एचटीपीयूटीलिटी.एचटीएमडीकोड (एचटीएमएल। वैलिडेशन मैसेज फॉर (एक्स => x.Name) .ToHtmlString())); – George

1

अपने खुद के विस्तार विधि की नकल करता है Html.VallidationMessage ... बनाएँ?

मुझे ऐसा कुछ करना पड़ा क्योंकि एमवीसी सत्यापन सामग्री (मॉडलस्टेट, सत्यापन मैसेज इत्यादि) में निर्मित पृष्ठ उन पृष्ठों के लिए पूरा नहीं करता है जिनमें पृष्ठ पर एक से अधिक रूप हैं।

+0

आप सही हैं - मैंने गलत आइटम अपडेट किया था। वे दोनों एचटीएमएल के एन्कोडिंग से संबंधित थे - मैंने अभी गलत अपडेट किया था। मैंने अद्यतन हटा दिया है। ध्यान देने के लिए धन्यवाद। – IEnumerator

संबंधित मुद्दे