Tuesday, 15 June 2010

javascript - Knockout.js rows won't validate in MVC -


I'am का उपयोग MVC, C #, Razor, और Knockout.js

मॉडल> SKUPrice.cs

  [आवश्यक] [प्रदर्शन (नाम = "एसआरपी")] सार्वजनिक दशमलव एसआरपी {get; सेट; }  

नियंत्रकों> SKUPriceController.cs

  public ActionResult बनाएँ (पूर्णांक आईडी = 1) {वापसी देखें (); } [HttpPost] public ActionResult (; SKUPrice & gt; सूची से & lt skuprices) बनाएं {अगर (ModelState.IsValid) {foreach (SKUPrice skuprices में skuprice) {db.SKUPrices.AddObject (skuprice); db.SaveChanges (); }}} वापसी देखें ();  

दृश्य> SKUPrice> Create.cshtml

  & lt; तालिका & gt; & LT; thead & gt; & LT; टीआर & gt; & LT; वें & gt; @ एचटीएमएल.लैबलफोर (मॉडल = & gt; मॉडल [0] .SRP) & lt; / th & gt; & LT; वें & gt; & Lt; / वें & gt; & LT; टीआर & gt; & LT; टीआर & gt; & LT; टीडी & gt; & Lt; input class = "form-control" data-val = "true" data-val-number = "फ़ील्ड एसआरपी एक संख्या होनी चाहिए।" डेटा-वैल-आवश्यक = "एसआरपी फ़ील्ड की आवश्यकता है।" नाम = "[0] .SRP" प्रकार = "संख्या" मान = "0" चरण = "0.25" & gt; & LT; span class = "सहायता-ब्लॉक" & gt; & lt; span class = "क्षेत्र के सत्यापन-वैध" डेटा-valmsg-के लिए = "[0] .SRP" डेटा-valmsg-बदलें = "true" & gt; & lt; / span & gt; & lt; / span & gt; & Lt; / टीडी & gt; & LT; टीडी & gt; & Lt; इनपुट प्रकार = "बटन" ऑनक्लिक = "" मान = "जोड़ें" वर्ग = "बीटीएन बीटीएन-प्राथमिक" डेटा-बाइंड = "क्लिक करें: जोड़ मूल्य" & gt; & Lt; / टीडी & gt; & Lt; / टीआर & gt; & Lt; / thead & gt; & Lt; tbody डेटा-बाइंड = "foreach: SKUPrice" & gt; & LT; टीडी & gt; & Lt; input class = "form-control" data-val = "true" data-val-number = "फ़ील्ड एसआरपी एक संख्या होनी चाहिए।" डेटा-वैल-आवश्यक = "एसआरपी फ़ील्ड की आवश्यकता है।" प्रकार = "संख्या" मान = "0" चरण = "0.01" डेटा-बाइंड = "एट्रि: {नाम: '[' + ($ इंडेक्स) + 1) + '] एसआरपी'}" & gt; & LT; span class = "सहायता-ब्लॉक" & gt; & lt; span class = "क्षेत्र के सत्यापन-वैध" डेटा-valmsg-बदलें = "true" डेटा-बाँध = "attr: { 'डेटा-valmsg-के लिए': ' ['($ इंडेक्स () + 1) +'] एसआरपी '} "& gt; & lt; / span & gt; & Lt; / span & gt; & Lt; / टीडी & gt; & LT; टीडी & gt; & Lt; i class = "fa fa-close" डेटा-बाइंड = "क्लिक करें: $ parent.removePrice" शैली = "कर्सर: सूचक; रंग: लाल;" & gt; & lt; / i & gt; & Lt; / टीडी & gt; & Lt; / tbody & gt; & Lt; / तालिका & gt; & Lt; इनपुट प्रकार = "जमा करें" मान = "सहेजें" नाम = "सहेजें" वर्ग = "बीटीएन बीटीएन-प्राथमिक" / & gt;  

लिपियों> main.js

  फ़ंक्शन व्यू मॉोडल () {var self = this; Self.SKUPrice = को.ओब्सबेबलअरेरे ([]); Self.addPrice = function () {self.SKUPrice.push ({count: ""}}); }; स्वयं .removePrice = फ़ंक्शन () {self.SKUPrice.remove (this); }; } Ko.applyBindings (नया ViewModel ());  

जब मैं पहली पंक्ति में एक गैर-नंबर दर्ज करता हूं और उसे मान्य करने के लिए क्लिक करें, लेकिन जब मैं दूसरी पंक्ति जोड़ता हूं और एक गैर-संख्या मान दर्ज करता है, यह अन्य पंक्तियों को छोड़कर अन्य मान्यताओं को मान्य नहीं करता है पहली पंक्ति इसके साथ समस्या क्या है?

ऐसा लगता है कि & lt; input type = "text" data-val = "true" / & gt; डेटा-वैल / कोड> काम नहीं कर रहा है?

मुझे लगता है कि जब आप नया आइटम जोड़ते हैं तो क्या हो रहा है टीडी & gt; SKUPrice सरणी, नॉकआउट एक नया <कोड> & lt धक्का अपने डोम में है, लेकिन इस नए डोम तत्व MVC unobstrusive मान्यता यह करने के लिए लागू नहीं पड़ा है। मैं MVC के साथ विशेषज्ञ नहीं हूँ, लेकिन आप addPrice के लिए इस लाइन को जोड़ने की कोशिश कर सकते:

  self.addPrice = function () {self.SKUPrice.push ({गिनती : ""}); $ .validator.unobtrusive.parse ('# yourFormSelector')};  

जहां #yourFormSelector आपका & lt; form & gt; तत्व प्राप्त करने के लिए एक jQuery चयनकर्ता है, जिसे मैं नहीं देख सकता आपके HTML में।

एक तरफ के रूप में, मैंने देखा कि आपके & lt; tr & gt; आपके & lt; tbody & gt; के अंदर नहीं है - क्या यह जानबूझकर है? यह अधिक सामान्य हो सकता है:

  & lt; tbody डेटा-बाइंड = "foreach: SKUPrice" & gt; & LT; टीआर & gt; & LT; टीडी & gt; निविष्टियाँ ... & lt; / td & gt; & LT; टीडी & gt; निकट लिंक ... & lt; / td & gt; & Lt; / टीआर & gt; & Lt; / tbody & gt;  

No comments:

Post a Comment