2011-03-13 17 views
6

मैं कोशिश की है:.NET MVC3 HTML फ़ॉर्म में आवश्यक नाली योग्य दिनांक समय में शून्य मान को कैसे अनुमति दें?

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}", ConvertEmptyStringToNull = true)] 
[Required(AllowEmptyStrings = true)] 
public DateTime? BirthDateFrom { get; set; } 

और

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
[Required] 
public DateTime? BirthDateFrom { get; set; } 

और साथ और ConvertEmptyStringToNull और AllowEmptyStrings बिना सभी संयोजनों।

ध्यान में रखते हुए मैं:

@Html.EditorFor(m => m.BirthDateFrom) 

मैं मान्य दिनांक के साथ प्रपत्र प्रस्तुत कर सकते हैं, लेकिन उस क्षेत्र में रिक्त स्ट्रिंग के साथ, यह सिर्फ लाल हो जाता है और फ़ॉर्म जमा नहीं किया जा सकता। एचटीएमएल फॉर्म सबमिशन को शून्य या खाली स्ट्रिंग मान के साथ आवश्यक नाली योग्य डेटटाइम में कैसे अनुमति दें?

+1

यह टर्मिनिस में एक विरोधाभासी की तरह लगता है। यदि फ़ील्ड आवश्यक है तो यह क्यों शून्य है? क्या आप डेटटाइम व्यक्त करने का कोई तरीका ढूंढ रहे हैं। लक्षण? आवश्यकता भ्रमित है। – rene

+0

@rene डेटटाइम। लक्षण अच्छा होगा। – Hogan

+0

ए "आवश्यक नालीबल" फ़ील्ड को कोई समझ नहीं आता है, शायद यही कारण है कि आप इसे कैसे फिट नहीं कर सकते हैं एमवीसी कैसे काम करता है। उस ने कहा, आवश्यक विशेषता को हटाने से चाल चलनी चाहिए, नहीं? – kprobst

उत्तर

9

ऐसा लगता है कि [Required] एनोटेशन को हटाकर पूरी तरह से आपकी आवश्यकता पूरी होगी।

5

तथ्य यह है कि प्रकार शून्य है, यह मानता है कि मान आवश्यक नहीं है। गैर-शून्य मान या को एक शून्य मान लागू करने में कोई बात नहीं है क्योंकि शून्य मान किसी भी जानकारी को प्रदान नहीं करता है।

ऐसा लगता है कि आपके पास होने वाली समस्या अर्थ 'शून्य' के उदाहरण है, उदा। 'कोई नहीं' बनाम 'किसी भी' बनाम 'अज्ञात'। दुर्भाग्य से शून्य की .NET अवधारणा में शून्य के अलग-अलग प्रकार शामिल नहीं हैं। इसका संवाद करने का एकमात्र तरीका या तो उपयोग करना होगा: -

ए) 'भावनात्मक' मान, उदा। DateTime.MinValue कुछ विशेष संचार करता है, और आप सुनिश्चित हैं कि DateTime.MinValue कभी भी आपके डोमेन मॉडल में मान्य मान नहीं होगा।

बी) अनुपलब्ध DateTime मान के अर्थ को इंगित करने के लिए बाहरी झंडे का उपयोग करें, उदा। bool isAny, bool isUnknown, आदि या शायद एक उचित enum

0

यदि आप ईएफ से निपट रहे हैं, तो आप इसे इस तरह से वैकल्पिक बना सकते हैं।

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();    
    base.OnModelCreating(modelBuilder); 
}