2011-11-18 12 views
20

मैं अपने मॉडल में एक DateTime संपत्ति है, लेकिन मैं केवल समय भाग में दिलचस्पी रखता हूँ:मैं सत्यापन गुण को उत्पन्न होने से कैसे रोक सकता हूं?

public class MyModel 
{ 
    [Required, DataType.Time] 
    public DateTime Time 
} 

मेरी नजर में, मैं यह उत्पादन इतना की तरह:

@Html.EditorFor(model => model.Time) 

यह उत्पन्न करने के लिए इस्तेमाल किया MVC 3 में निम्नलिखित एचटीएमएल:

<input class="text-box single-line" data-val="true" 
    data-val-required="The Time field is required." 
    id="Time" name="Time" type="time" value="" /> 

अब मैं MVC 4 के साथ इस कोशिश कर रहा हूँ, और यह उत्पन्न एचटीएमएल है:

<input class="text-box single-line" data-val="true" 
    data-val-date="The field Time must be a date." 
    data-val-required="The Time field is required." 
    id="Time" name="Time" type="time" value="" /> 

अतिरिक्त विशेषता data-val-date जोड़ा गया है, जिसके परिणामस्वरूप क्लाइंट साइड सत्यापन त्रुटि होती है, क्योंकि एक समय (उदा। "10:30") एक तारीख के रूप में नहीं बनाया गया है।

मुझे लगता है कि यह एमवीसी 4 (I reported it) में एक बग है? लेकिन जब तक यह हल नहीं हो जाता है, क्या इस विशेषता को उत्पन्न होने से रोकने का कोई तरीका है? या इससे भी बेहतर, क्या इसे data-val-time के रूप में उत्पन्न होने का एक तरीका है, इसलिए मैं समय फ़ील्ड के लिए अपना स्वयं का क्लाइंट साइड सत्यापन विधि प्रदान कर सकता हूं?

उत्तर

2

मैं कह सकता हूं कि बेहतर विकल्प आपके क्लाइंट साइड सत्यापन समारोह को लिखना होगा। अन्यथा आप कुछ स्पूफिंग कर सकते हैं जो मैं नहीं कहूंगा कि यह सही तरीका है लेकिन यह आपकी समस्या का समाधान कर सकता है। एमवीसी सत्यापन के संबंध में मुझे भी इसी तरह का मुद्दा था जहां मैं क्लाइंट साइड सत्यापन के व्यवहार को बदलना चाहता था। कृपया लिंक

Asp.net MVC3 validation

विचार यहाँ आप मैन्युअल रूप से इस तरह के "डेटा-वैल-आवश्यक" और अपने इनपुट क्षेत्र के लिए "डेटा-वैल" और फिर इसके लिए सत्यापन संदेश जोड़ के रूप में विशेषताओं को जोड़ने है देखते हैं।

उम्मीद है कि यह आपको किसी भी तरह से मदद करता है।

संपादित करें:

मॉडल

public class MyModel 
{  
    public DateTime Time 
} 

फिर अपने नियंत्रण में विशेषताएं जोड़ने से इस

निकालें आवश्यक फ़ील्ड attr के रूप में

@Html.TextBoxFor(model => model.Time, new Dictionary<string, object> { { "data-val-required", "required" }, { "data-val", "true" }}) 
    @Html.ValidationMessage("Time", "The Time field is required.") 
+0

आपके उत्तर के लिए धन्यवाद, लेकिन यह वास्तव में मेरी समस्या का समाधान नहीं करता ... मैं एक विशिष्ट विशेषता ('डेटा-वैल-date') करने के लिए * * सम्मिलित नहीं किया जा चाहते हैं, के रूप में यह स्वचालित रूप से कहीं न कहीं डाला जाता है एमवीसी पाइपलाइन में। – fretje

+0

@fretje संपादन अनुभाग – pramodtech

4

आदर्श लेकिन नहीं नीचे दिखाया गया है की कोशिश यह काम करेगा; मान्यता निकालने के लिए अपनी मास्टर टेम्पलेट में जावास्क्रिप्ट का उपयोग करें:

$(document).ready(function(){ 
    $("input[data-val-date]").removeAttr("data-val-date"); 
}); 
1

मैं एक जावास्क्रिप्ट तारीख वस्तु, जो बारी में विनीत सत्यापन के सत्यापन पारित कर दिया के रूप में इनपुट क्षेत्र के मान सेट की कोशिश की है।

$("#date-input-field").val(new Date(1,0,1970)); 
$.validator.unobtrusive.parse('#form'); 
var form = $('#form'); 
form.validate(); 

यह jQuery 1.7.2, validation.unobtrusive और mvc4 के साथ किया जाता है।

उम्मीद है कि इससे मदद मिलती है।

3

[डेटाटाइप (डेटाटाइप.डेटाइम)] के बजाय [डेटाटाइप ("टाइम")] का उपयोग करें।इससे एमवीसी आपके वैरिएबल को डेटटाइम के रूप में नहीं मानेगा, और फिर यह "डेटा-वैल-डेट" विशेषता उत्पन्न नहीं करेगा।

अनिवार्य रूप से [डेटाटाइप ("टाइम")] आपके चर को एक कस्टम प्रकार बनाता है। हालांकि, आप कस्टम प्रकार के लिए किसी भी अन्य स्ट्रिंग नाम का उपयोग नहीं कर सकते हैं। एमवीसी एक कस्टम प्रकार के लिए अंतर्निहित प्रकार का पता लगाने की कोशिश करता है। केवल तभी जब आप अपने कस्टम प्रकार को "टाइम" के रूप में नामित करते हैं, तो यह पता लगाएगा।

1

कक्षा में ClientValidationEnabled और UnobtrusiveJavaScriptEnabled को झूठा करने का सबसे अच्छा तरीका है।

HtmlHelper.ClientValidationEnabled = false; 
HtmlHelper.UnobtrusiveJavaScriptEnabled = false; 
+0

के तहत लिखे गए कोड को आजमाएं मेरे पास मेरे कॉन्फ़िगरेशन में हैं। उन्हें बंद करना भी काम करता था। –

+0

लेकिन मैं सिर्फ दृश्य में सेट करना पसंद करता हूं। –

+1

@VitorCanova जैसा आप चाहें सर .. –

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

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