2009-04-07 17 views
6

मैं एक मॉडल है कि कुछ सत्यापन की जाँच करता है और ModelState करने के लिए त्रुटियों कहते हैं मिल गया है पर पर ध्यान केंद्रित:सेट ASP.NET MVC मॉडल त्रुटियों

ViewData.ModelState.AddModelError("mycontrol", "message") 

वे दृश्य पक्ष पर ठीक से प्रदर्शित, लेकिन वहाँ एक है प्रमाणीकरण संदेश के अनुरूप नियंत्रण में फोकस सेट करने का तरीका? अभी, पृष्ठ पृष्ठ के शीर्ष पर रीफ्रेश और रहता है, इसलिए यदि त्रुटि पृष्ठ के अंत की ओर है, तो उपयोगकर्ता के लिए यह स्पष्ट नहीं है कि क्या हुआ।

नोट: एक अन्य समाधान ValidationSummary पेज के शीर्ष पर त्रुटियों की सूची दिखाने के लिए हो सकता है, लेकिन मैं इसे कभी कुछ भी प्रदर्शित करने के लिए प्राप्त करने में सक्षम किया गया है। मेरी सभी त्रुटियां ValidationMessage के माध्यम से प्रदर्शित की जाती हैं।

संपादित करें: मुझे सत्यापन समस्या के साथ मेरी समस्या मिली। मार्कअप मैं था:

<% Html.ValidationSummary()%> 

जो किया जाना चाहिए था:

<%=Html.ValidationSummary()%> 

मैं अभी भी चाहते हैं पता करने के लिए हालांकि त्रुटि के साथ क्षेत्र के लिए तस्वीर करने के लिए कैसे।

+0

प्रमाणीकरण सारांश काम करना चाहिए। यह मेरे लिए करता है। क्या आप हमें अपना कुछ मार्क अप दिखा सकते हैं (शायद स्थिर एचटीएमएल छोड़कर सरलीकृत)? HtmlHelper एक्सटेंशन त्रुटियों को प्रस्तुत करने के लिए एक ही मॉडल स्थिति को देखता है। – tvanfosson

+0

मैं जब मैंने देखा मेरे नमूना कोड पोस्टिंग के माध्यम से आधे रास्ते मिला लापता "=" मार्कअप (और माथे पर रखा खुली हथेली) में। – gfrizzle

उत्तर

24

कुछ jQuery अच्छाई एक त्रुटि के साथ पहली इनपुट करने के लिए स्क्रॉल करने के लिए। मुश्किल सा पहले आपको() फोकस आह्वान एक jQuery वस्तु पर ध्यान केंद्रित() विधि के रूप में के बजाय तत्व को ध्यान देने का ध्यान केंद्रित ईवेंट सक्रिय अंतर्निहित डोम तत्व प्राप्त करने के लिए है।

<script type='text/javascript'> 
    $(document).ready(function() 
    { 
     var input = $('.input-validation-error:first'); 

     if(input) 
     { 
      input.focus(); 
     } 
    }); 
</script> 
+0

अच्छा समाधान। मुझे इसे काम करने के लिए बस "वापसी झूठी" जोड़नी पड़ी। अगर (इनपुट) { input.focus(); झूठी वापसी; } –

+0

@HallgeirEngen जो वास्तव में आवश्यक नहीं होना चाहिए। यह सब तैयार हैंडलर के निष्पादन को रोक देगा। यदि उसके बाद आपके पास कोई कोड है, तो इसे निष्पादित नहीं किया जाएगा। – tvanfosson

1

आप उस पृष्ठ पर इनपुट तत्व ढूंढने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं जिसमें एमवीसी सत्यापन एचटीएमएल क्लास (इनपुट-सत्यापन-त्रुटि) जोड़ा गया है, और कैरेट को पहले स्थान पर ले जाएं। स्क्रीन को उस तत्व में/चाहिए/स्थानांतरित करना चाहिए हालांकि मैंने इसका परीक्षण नहीं किया है। इस तरह के jQuery के रूप में

एक जे एस पुस्तकालय यह करने के लिए सरल कर देगा।

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