अद्यतन: यदि आप जावास्क्रिप्ट में कम से कम एक ब्रेकपाइंट, कार्यों के लिए सत्यापन शुरू सेट है, लेकिन यह काम नहीं करता बिनाMVC 3 ग्राहक सत्यापन रुक-रुक कर काम करता है
अद्यतन: jQuery टैग जोड़ने के रूप में इस से जुड़ा हो सकता सत्यापन प्लगइन
मैं MVC 3 संस्करण, System.Web.Mvc
उत्पाद संस्करण है: 3.0.20105.0
5th of Jan 2011
पर संशोधित - मुझे लगता है कि कि नवीनतम है।
मैं नोटिस कि ग्राहक सत्यापन काम नहीं कर रहा है क्योंकि यह आवेदन है कि हम पैदा कर रहे में लगता है, तो मैं एक त्वरित परीक्षण कर लिया है।
मैंने इंटरनेट एप्लिकेशन टेम्पलेट का उपयोग कर मूल एमवीसी 3 एप्लिकेशन बनाया है।
using System.Web.Mvc;
using MvcApplication3.Models;
namespace MvcApplication3.Controllers
{
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Create()
{
Sample model = new Sample();
return View(model);
}
[HttpPost]
public ActionResult Create(Sample model)
{
if(!ModelState.IsValid)
{
return View();
}
return RedirectToAction("Display");
}
public ActionResult Display()
{
Sample model = new Sample();
model.Age = 10;
model.CardNumber = "1324234";
model.Email = "[email protected]";
model.Title = "hahah";
return View(model);
}
}
}
मॉडल::
using System.ComponentModel.DataAnnotations;
namespace MvcApplication3.Models
{
public class Sample
{
[Required]
public string Title { get; set; }
[Required]
public string Email { get; set; }
[Required]
[Range(4, 120, ErrorMessage = "Oi! Common!")]
public short Age { get; set; }
[Required]
public string CardNumber { get; set; }
}
}
और 3 बार देखे गए:
मैं टेस्ट नियंत्रक जोड़ दिया है
बनाएँ:
@model MvcApplication3.Models.Sample
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@*@{ Html.EnableClientValidation(); }*@
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>Sample</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Age)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Age)
@Html.ValidationMessageFor(model => model.Age)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.CardNumber)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CardNumber)
@Html.ValidationMessageFor(model => model.CardNumber)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
@*<fieldset>
@Html.EditorForModel()
<p>
<input type="submit" value="Create" />
</p>
</fieldset> *@
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
प्रदर्शन:
@model MvcApplication3.Models.Sample
@{
ViewBag.Title = "Display";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Display</h2>
<fieldset>
<legend>Sample</legend>
<div class="display-label">Title</div>
<div class="display-field">@Model.Title</div>
<div class="display-label">Email</div>
<div class="display-field">@Model.Email</div>
<div class="display-label">Age</div>
<div class="display-field">@Model.Age</div>
<div class="display-label">CardNumber</div>
<div class="display-field">@Model.CardNumber</div>
</fieldset>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
सूचकांक:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create", "Create")
</p>
<p>
@Html.ActionLink("Display", "Display")
</p>
यहाँ सब कुछ डिफ़ॉल्ट है - बनाएं नियंत्रक, उचित पाड़ टेम्पलेट के साथ निर्दिष्ट नियंत्रक कार्रवाई से AddView मॉडल के साथ और नमूना आवेदन में प्रदान किए गए लेआउट का उपयोग कर।
जब मैं /टेस्ट/के लिए जाना जाएगा ज्यादातर मामलों में ग्राहक सत्यापन बनाएं केवल Title
और Age
क्षेत्रों के लिए काम करता है, यह सभी क्षेत्रों के लिए काम करता बनाएं क्लिक करने के बाद (नहीं बना सर्वर को जाता है)।
हालांकि कुछ मामलों में (निर्माण के बाद) Title
सत्यापन काम कर रहा है नहीं और Email
है, या CardNumber
या Title
और CardNumber
लेकिन Email
नहीं है। लेकिन कभी नहीं सभी मान्यता पर क्लिक बनाएं से पहले काम कर रहा है।
मैं Html.EditorForModel
साथ फार्म के रूप में अच्छी तरह से लागू के रूप में ग्राहक सत्यापन बनाने की कोशिश की किया है, उसे BeginForm से पहले:
@{ Html.EnableClientValidation(); }
मैं providing a source code for this sample on dropbox हूँ - के रूप में हो सकता है हमारे देव env टूट गया है:/मैं IE पर परीक्षण किया है 8 और क्रोम 10 बीटा।
शायद ज़रुरत पड़े, वेब config में मान्यता स्क्रिप्ट सक्षम हैं:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
तो मेरे सवालों का
वहाँ सुनिश्चित करने के लिए के रूप में यह काम करने के लिए माना जाता है कि ग्राहकों का सत्यापन काम करेंगे एक रास्ता है कर रहे हैं और intermittently नहीं?
क्या यह वांछित व्यवहार है और मुझे कॉन्फ़िगरेशन/कार्यान्वयन में कुछ याद आ रहा है?
अद्यतन: यदि आप जावास्क्रिप्ट में कम से कम एक ब्रेकपाइंट, कार्यों के लिए सत्यापन शुरू, लेकिन बिना सेट यह काम नहीं करता
अद्यतन: jQuery टैग जोड़ने के रूप में इस मान्यता प्लगइन से जुड़ा हो सकता
यह मेरे साथ भी हो रहा है ... इस पर कोई संकल्प ?? – cecilphillip