मेरे पास एक इकाई स्थान है और मैं इनलाइन संपादन मोड के साथ केंडू यूआई ग्रिड का उपयोग कर रहा हूं। इकाई का गुण डिस्प्लेनाम है, जो आवश्यक है और डेटाबेस में दो बार मौजूद नहीं होना चाहिए।केंडो ग्रिड इनलाइन कस्टम सत्यापन संदेश संपादित करें उदा। डुप्लिकेट नाम आदि के लिए
फिलहाल, यह आवश्यक मान्यकरण संदेश प्रदर्शित करने के लिए काम करता है:
और यह भी एक तरीका है CustomValidateModel LocationController अजाक्स इनलाइन में कहा जाता है का निर्माण करने कि चेक पद्धति बनाएं काम करता है यदि नाम डेटाबेस में पहले से मौजूद है और फिर मॉडल एरर जोड़ता है। मैं में इस त्रुटि को पकड़ता हूं। इवेंट्स (घटनाओं => घटनाओं। त्रुटि ("ऑनरर")) जावास्क्रिप्ट के माध्यम से और तब जावास्क्रिप्ट पॉपअप के माध्यम से संदेश दिखाएं।
ModelState.AddModelError("DisplayName", "Name already exists.");
और इस मामले की जड़ है: मैं इस जावास्क्रिप्ट पॉपअप संदेश के लिए नहीं करना चाहती। मैं इस क्षेत्र के नीचे भी इस जानकारी को रखना चाहता हूं, जैसे कि "फ़ील्ड आवश्यक है!" संदेश। मैंने बहुत समय खोजा है, लेकिन अधिकांश लोग जावास्क्रिप्ट के माध्यम से केवल यह प्रमाणीकरण और आउटपुट सुझाते हैं क्योंकि यह इस समय काम करता है।
इसके अतिरिक्त, पॉपअप के अलावा वास्तविक समस्या यह है कि रिकॉर्ड, जिसे उपयोगकर्ता ग्रिड में बनाना चाहता है, तब जावास्क्रिप्ट पॉपअप की पुष्टि करने के बाद गायब हो रहा है। लेकिन प्रयोज्यता के लिए, मैं चाहता हूं कि नई लाइन और इनपुट बनी रहे। उपयोगकर्ताओं को दिए गए नाम को संपादित करने में सक्षम होना चाहिए, वह बचाना चाहता था। और फिर पूरी लाइन में प्रवेश नहीं करना चाहिए। केवल सत्यापन संदेश "नाम पहले से मौजूद है।" जानकारी के लिए संकेत देना चाहिए।
कोड:
स्थान इकाई:
public class LocationDto
{
public Guid? ID { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Field required!")]
public string DisplayName { get; set; }
// other properties
}
LocationController कार्रवाई विधि:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateInline([DataSourceRequest] DataSourceRequest request, LocationDto model)
{
CustomValidateModel(model); // checks if the DisplayName is already existing in the DB
if (model != null && ModelState.IsValid)
{
// Create and Save the Model into database
}
return Json(ModelState.ToDataSourceResult());
}
जावास्क्रिप्ट समारोह:
function onError(e, status) {
if (e.errors) {
var message = "Error:\n";
$.each(e.errors, function (key, value) {
if (value.errors) {
message += value.errors.join("\n");
}
});
this.cancelChanges();
alert(message);
}
}
मुझे आशा है कि यह इस तरह से काम करने की संभावना है। यह अनुकूल दृश्यता और उपयोगिता में वृद्धि के अनुसार ठीक होगा।
मैं आपको अगली उत्तर में केंडो टेम्पलेट का उपयोग करने का सुझाव देता हूं। .Events (ई => e.Error ("onGridServerError.bind ({gridId:: 'grid_custom_field_options'})")) जे एस: – Sergey
इसके अलावा यहाँ अच्छा चाल कैसे हैंडलर अधिक सामान्य बनाना है वर ग्रिड = $ ('#' + this.gridId)।getKendoGrid(); – Sergey
प्रमाणीकरण से वर्ग 'k-invalid-msg' को हटाएं मैसेज टेम्पलेट ==> यह सीएसएस 'डिस्प्ले जोड़ें: कोई नहीं' – jiji2663