2013-11-01 6 views
9

मैं ईमेल और फोन फ़ील्ड पर क्लाइंट-साइड सत्यापन करने के लिए अपने एएसपी.नेट एमवीसी 4 प्रोजेक्ट में डेटा एनोटेशन का उपयोग कर रहा हूं। ईमेल सफलतापूर्वक क्लाइंट में मान्य है, लेकिन फोन नहीं है - यह मेरे अमान्य वर्ण दर्ज करने के लिए अनुमति देता है और केवल प्रपत्र (बजाय तुरंत बाद चरित्र लिखा गया)ईमेल डेटा एनोटेशन सत्यापन कार्य करता है लेकिन फोन

मॉडल में प्रस्तुत करने पर मुझे चेतावनी देते हैं:

[Required(ErrorMessage = "Email is required")] 
[DataType(DataType.EmailAddress)] 
[EmailAddress] 
[Display(Name = "Email")] 
public string Email{ get; set; } 

[Required(ErrorMessage = "Mobile is required")] 
[DataType(DataType.PhoneNumber)] 
[Phone] 
[Display(Name = "Mobile number")] 
public string Mobile { get; set; } 

ध्यान में रखते हुए मेरा मानना ​​है कि मैं सही स्क्रिप्ट संदर्भ शामिल कर रहा हूँ:

<script type="text/javascript" src="~/Scripts/jquery.validate.min.js" ></script 
<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js" ></script> 

..और एचटीएमएल सहायकों का उपयोग कर (मैं TextBoxFor उपयोग कर रहा हूँ बल्कि EditorFor से के रूप में मैं वर्ग गुण जो मेरे पास है लागू करने कर रहा हूँ स्पष्टता के लिए यहां छोड़ा गया)

@Html.LabelFor(model => model.Email) 
@Html.ValidationMessageFor(model => model.Email) 
@Html.TextBoxFor(model => model.Email, new { @type = "email" })  

@Html.LabelFor(model => model.Mobile) 
@Html.ValidationMessageFor(model => model.Mobile) 
@Html.TextBoxFor(model => model.Mobile, new { @type = "phone" }) 

मुझे क्या याद आ रही है?

उत्तर

0

मुझे लगता है कि समस्या यह है कि फोन का प्रकार अभी समर्थित नहीं है। देखें phone type support at w3schools

+0

शायद ओपी से पूछना बेहतर होगा (टिप्पणी का उपयोग करके) किस फोन प्रकार का उपयोग किया जा रहा है; यह एक समर्थित प्रकार हो सकता है जिस स्थिति में यह उत्तर नहीं है ... – einpoklum

+0

@OzAnt - क्या आप कह रहे हैं कि टाइप = "फोन" के बजाय मुझे नए प्रकार = "टेल" का उपयोग करना चाहिए ?? –

+0

@LiamWeston - बिल्कुल नहीं: w3schools का कहना है कि एचटीएमएल 5 प्रकार के टेलीफोन के साथ एक टेलीफोन इनपुट प्रकार को परिभाषित करता है, फोन नहीं, लेकिन इस प्रकार को किसी भी ब्राउज़र द्वारा समर्थित नहीं है (जैसा कि मुझे लगता है कि प्रत्येक देश में फोन नंबर अलग हैं)। तो आप अपने फोन नंबर को अपने मॉडल में अपने स्वयं के रेगेक्स के साथ मान्य करने और क्लाइंट साइड पर इसे लागू करने से बेहतर हो सकते हैं। ऐसा लगता है कि यह एक संकेत है क्योंकि आईफोन टाइप = "टेल" को पहचानता है, और कीबोर्ड को मानक फोन कीबोर्ड पर पूरी तरह से बदलता है [link] http://html5doctor.com/html5-forms-input-types/#input -टेल – OzAnt

6
[Required(ErrorMessage = "Mobile is required")] 
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered mobile format is not valid.")] 
public string Mobile{get; set;} 

ऐसा लगता है कि संख्या की भरपाई कर देंगे:, 012-345-6789, (012) -345-6789 आदि

2

MVC 4 है एक EmailAddress के लिए नहीं बल्कि निर्मित प्रदर्शन टेम्पलेट फ़ोन नंबर। आपको [DataType(DataType.PhoneNumber)] के लिए कस्टम डिस्प्ले टेम्पलेट बनाने की आवश्यकता है।

निम्नलिखित फ़ाइल जोड़ें (आप की संभावना सबफ़ोल्डर DisplayTemplates बनाना पड़ेगा):
Views\Shared\DisplayTemplates\PhoneNumber.cshtml

@model System.String 
@if (Model != null) 
{ 
    @:@System.Text.RegularExpressions.Regex.Replace(@Model, "(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3") 
} 
0

उपयोग EditorFor, ईमेल के लिए TextBoxFor के insted तो यह ईमेल फ़ील्ड में त्रुटि ठीक KeyUp देता होगा।

+0

@ Html.LabelFor (मॉडल => model.Email) @ Html.ValidationMessageFor (मॉडल => model.Email) @ Html.EditorFor (मॉडल => model.Email) उपयोग ईमेल सत्यापन के लिए इस –

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