2012-06-11 15 views
9

के लिए DisplayFormat.DataFormatString क्या कोई तरीका है कि मैं एक दृश्य मॉडल प्रॉपर्टी पर DisplayFormat विशेषता का उपयोग कर सकता हूं ताकि सामाजिक सुरक्षा नंबर या फ़ोन नंबर के लिए DataFormatString प्रारूप लागू किया जा सके? मुझे पता है कि मैं जावास्क्रिप्ट के साथ ऐसा कर सकता हूं, लेकिन अगर संभव हो तो मॉडल को संभालना पसंद करेंगे।फ़ोन नंबर या सोशल सिक्योरिटी नंबर

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "???????")] 
public string Ssn { get; set; } 

उत्तर

12

निम्नलिखित कार्य करना चाहिए, हालांकि एसएसएन संपत्ति के लिए प्रकार अंतर देखें। , अगर प्रकार एक पूर्णांक है

@Html.DisplayFor(m => m.Property) 
+2

हम्म, मैं इस के साथ चारों ओर गंदगी करने जा रहा हूँ, लेकिन दोनों फोन और एसएसएन को मेरे डेटाबेस में VARCHAR के रूप में संग्रहीत किया जाता है, इसलिए मुझे उन गुणों को 'लंबे' के रूप में स्थापित करने के लिए थोड़ा सा काम करना होगा। 'String' के रूप में टाइप की गई गुणों के साथ ऐसा करने का कोई तरीका नहीं है? –

+1

एक विकल्प, प्रकार के गुणों के साथ एक दृश्य मॉडल स्थापित करना होगा और संबंधित डेटा एनोटेशन और बस अपनी डोमेन इकाई के बीच प्रकार को रूपांतरित करना होगा और मॉडल देखें: कनवर्ट.ओआईएनटी 64 ("123456789") – Jesse

+2

lol ... प्यार डाउनवॉट्स पर उत्तर जो एक वर्ष से अधिक पुरानी टिप्पणियों के साथ हैं .... – Jesse

0

स्वीकार किए जाते हैं जवाब बहुत अच्छा है:

[DisplayFormat(DataFormatString = "{0:###-###-####}")] 
public long Phone { get; set; } 

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:###-##-####}")] 
public long Ssn { get; set; } 

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

/Shared/DisplayTemplates/ के अंदर, एक टेम्पलेट Phone.vbhtml नामित करें:

@ModelType String 
@If Not IsNothing(Model) AndAlso Model.Length = 10 Then 
    @<span>@String.Format("({0}) {1}-{2}", 
       Model.Substring(0, 3), 
       Model.Substring(3, 3), 
       Model.Substring(6, 4))</span> 
Else 
    @Model 
End If 

आप कई तरह के इस आह्वान कर सकते हैं:

  1. बस एक ही के एक डेटा प्रकार के साथ अपने मॉडल पर संपत्ति पर टिप्पणी नाम:

    <DataType("Phone")> _ 
    Public Property Phone As String 
    

    और फिर एक साधारणका उपयोग करके कॉल करें:

    @Html.DisplayFor(Function(model) model.Phone) 
    
  2. वैकल्पिक रूप से, आप DisplayTemplate निर्दिष्ट कर सकते हैं आप नाम से उपयोग करना चाहते हैं:

    @Html.DisplayFor(Function(model) model.VimsOrg.Phone, "Phone") 
    
संबंधित मुद्दे