मेरे पास "प्रतिक्रिया सबमिट करें" फ़ॉर्म है जो "अजाक्स.बजिनफॉर्म" का उपयोग करता है ताकि फॉर्म तत्वों को आंशिक रूप से प्रस्तुत किया जा सके। ऑनस्ट्यूशन इवेंट ट्रिगर हो रहा है भले ही मॉडलस्टेट मान्य न हो। क्या यह सामान्य है? मैं कुछ पोस्टबैक करने में सक्षम होने की उम्मीद कर रहा था जिसके परिणामस्वरूप एक अवैध मॉडल था, फिर जब मॉडल मान्य है और कोई त्रुटि नहीं है तो ऑनस्यूफ इवेंट ट्रिगर होगा?एएसपी.नेट एमवीसी "अजाक्स.बिनगोरफॉर्म" ऑनस्यूफ को निष्पादित करता है भले ही मॉडल वैध नहीं है
उत्तर
क्या यह सामान्य है?
हां, ज़ाहिर है। यदि सर्वर HTTP 200 भेजता है तो ऑनस्यूप विधि कहा जाता है। मॉडलस्टेट वैधता की धारणा केवल सर्वर पक्ष है। जब तक आपका नियंत्रक कार्रवाई कुछ दृश्य/आंशिक/जेसन/... लौटाता है, तो ऑनस्यूवर ट्रिगर होगा। यदि आपके नियंत्रक कार्रवाई के अंदर कोई अपवाद फेंक दिया गया है तो OnSrror को OnSuccess के बजाय ट्रिगर किया जाएगा।
[HttpPost]
public ActionResult Process(MyViewModel model)
{
if (!ModelState.IsValid)
{
return Json(new { success = false });
}
return Json(new { success = true });
}
और उसके बाद:
function success(result) {
if (result.success) {
// the model was valid
} else {
// the model was invalid
}
}
अब अवैध मॉडल आप हो सकता है के मामले में
तो आदेश इस मामले को संभालने के लिए में आप अपने नियंत्रक कार्रवाई हो सकता था की तर्ज पर कुछ करना फ़ॉर्म को रीफ्रेश करके उपयोगकर्ता को त्रुटि संदेश दिखाना चाहते हैं। आप इस मामले में क्या कर सकते हैं वह आपके फॉर्म को आंशिक रूप से रखता है और अमान्य मॉडलस्टेट की स्थिति में आप अपने कंट्रोलर एक्शन से आंशिक रूप से वापस आते हैं और सफलता के मामले में एक जेसन ऑब्जेक्ट। तो अपनी सफलता हैंडलर में आप परीक्षण कर सकते हैं:
function success(result) {
if (result.success) {
// the model was valid
} else {
// there were errors => show them
$('#myform_container').html(result);
// if you are using client side validation you might also need
// to take a look at the following article
// http://weblogs.asp.net/imranbaloch/archive/2011/03/05/unobtrusive-client-side-validation-with-dynamic-contents-in-asp-net-mvc.aspx
// and reattach the client validators to the form as you are
// refreshing its DOM contents here
}
}
धन्यवाद धन्यवाद। यह जवाब सही है। मुझे आश्चर्य है कि इस परिदृश्य (मॉडल त्रुटियों) को अविभाज्य AJAX सामान के साथ संभालने पर ठोस दस्तावेज नहीं है। –
मेरे लिए काम नहीं करता है क्योंकि, विफलता पर, मुझे एक दृश्य वापस करना होगा, न कि JSON। – Misi
मुझे लगता है कि आपको पहले परिणाम के प्रकार की जांच करनी होगी: यदि (टाइपऑफ (परिणाम) == "ऑब्जेक्ट" && result.success) { – Misi
मैं एक काफी सरल जावास्क्रिप्ट तकनीक के साथ इस मुद्दे को संभालने:
पहले सेटअप अपने OnSuccess
इस तरह:
OnSuccess = "UpdateSuccessful(data)"
फिर
अपने जावास्क्रिप्ट समारोह की तरह यह:
function UpdateSuccessful(data) {
if (data.indexOf("field-validation-error") > -1) return;
// Do your valid stuff here
}
इस तरह, गड़बड़ी की कोई आवश्यकता नहीं है अपने नियंत्रक, या अधिक महत्वपूर्ण ith, अपने नियंत्रक यानी अजीब कुछ भी करने के बिना मॉडल त्रुटियों के साथ Partial View
लौट सकते हैं,:
public ActionResult SaveDetails(Project model)
{
if (ModelState.IsValid)
{
model.SaveProject();
}
return PartialView("ProjectForm", model);
}
और अपने AjaxOptions
में:
UpdateTargetId = "FormContents"
अब बस सुनिश्चित करें कि आपके div
या id="FormContents"
के साथ कुछ भी जहां भी आप अपना फॉर्म प्रदर्शित करना चाहते हैं। लुइस 'जवाब पर
var OnSuccess = function() {
if ($(".validation-summary-errors").length == 0) {
//Your javascript/jquery code goes here
}
}
'ऑनस्यूप =" अपडेट असफल (डेटा) "': वास्तव में सहायक। धन्यवाद। –
क्या यह ** 'डेटा' ** ऑब्जेक्ट सभी ब्राउज़रों पर काम करता है? क्या इसमें कोई सीमाएं या संगतता समस्याएं हैं? –
यह जावास्क्रिप्ट सक्षम होने वाले सभी ब्राउज़रों पर काम करना चाहिए। –
आप निम्न कर सकते हैं
function OnSuccess() {
if ($("span[class='field-validation-error']").length == 0) {
alert("Target Platform saved Successfully.");
}
}
मामूली बदलाव:
- 1. मॉडल स्थिति वैध नहीं है
- 2. एएसपी.नेट एमवीसी अपडेट मॉडल() विधि कैसे काम करता है?
- 3. एएसपी.नेट एमवीसी ड्रॉपडाउनलिस्ट मॉडल
- 4. एएसपी.नेट एमवीसी - मॉडल
- 5. बग? एएसपी.नेट एमवीसी 2 में क्लाइंट-साइड सत्यापन वैलिडेशनसमरी संदेश का कारण बनता है, भले ही कोई त्रुटि नहीं है
- 6. एएसपी.नेट एमवीसी मॉडल सत्यापन ViewModel
- 7. बंद करो ActiveRecord एक धारावाहिक स्तंभ नहीं है, भले ही
- 8. एएसपी.नेट एमवीसी मॉडल/व्यूमोडेल प्रमाणीकरण
- 9. एएसपी.नेट एमवीसी क्या अच्छा नहीं है?
- 10. एमवीसी - मॉडल कौन प्रारूपित करता है?
- 11. परीक्षण एएसपी.नेट एमवीसी व्यू मॉडल
- 12. एएसपी.नेट एमवीसी मॉडल बनाम व्यूमोडेल
- 13. कॉन्फ़िगरेशन वैलिडेटर कॉन्फ़िगरेशनप्रॉपर्टी के डिफ़ॉल्ट मान को क्यों मान्य करता है भले ही IsRequired सत्य है?
- 14. एएसपी.नेट एमवीसी अजाक्स पोस्ट ऑनकंपलेट पर भरोसा करते हैं भले ही विफलता की पुष्टि करें
- 15. एमवीसी 3 पूरे मॉडल को पोस्ट नहीं कर रहा है
- 16. सेलेनियम एलिमेंट नहीं मिला है, भले ही सेलेनियम आईडी
- 17. परीक्षण कोड जो एंटरप्राइज़ लाइब्रेरी पर निर्भरता है भले ही यह इंटरफेस प्रदान नहीं करता है?
- 18. को क्रमानुसार स्ट्रिंग संपत्ति है, भले ही स्ट्रिंग खाली है
- 19. दस्तावेज निष्पादित करें। भले ही उपयोगकर्ता बैक बटन
- 20. Heroku धक्का स्वीकार नहीं करता है, भले ही मैं विकास ब्लॉक में SQLite है
- 21. एएसपी.नेट एमवीसी एचटीएमएल क्यों है। चेकबॉक्स दो इनपुट एक ही नाम के साथ आउटपुट करता है?
- 22. कोई परिणाम नहीं है, भले ही कोई परिणाम
- 23. एएसपीनेट एमवीसी - दृश्य मॉडल को कैसे एक्सेस करता है?
- 24. update_attributes हमेशा सच देता है, भले ही nested_attributes
- 25. एएसपी.नेट एमवीसी एएसपी.नेट में कैसे तारित है?
- 26. एसक्लोकॉमंड पैरामीटर को कैसे वैध करता है?
- 27. यम नहीं मिला है भले ही मैंने इसे
- 28. ईएफ 4 मेरा डेटाबेस फिर से बनाने का प्रयास क्यों कर रहा है भले ही मॉडल नहीं बदला गया हो?
- 29. एएसपी.नेट एमवीसी में देखें-विशिष्ट मॉडल?
- 30. मानक एएसपी.नेट एमवीसी मॉडल बाइंडर के लिए प्रलेखन कहां है?
मैं मानता हूँ कि यह बेकार में साथ काम करने के जटिल है। हमें स्पष्ट रूप से एक साधारण मूल्य की आवश्यकता है जो इंगित करता है कि मॉडल मान्य है या नहीं। –