2012-01-09 11 views
6

से मॉडल डेटा भेजना मैं नॉकआउट के लिए नया हूं और नॉकआउट से वापस अपने सर्वर पर अपना डेटा प्राप्त करने का प्रयास करने में कठिनाई कर रहा हूं। मुझे इस ऑब्जेक्ट के लिए परिभाषित 'कोई पैरामीटर रहित कन्स्ट्रक्टर' की त्रुटि नहीं मिल रही है। किसी भी सहायता की सराहना की जाएगी।नॉकआउट से एमवीसी 3

मेरे नॉकआउट मॉडल के रूप में

 function partSummary(item) { 
      var self = this; 
      self.ID = ko.observable(item.ID); 
      self.serialNumber = ko.observable(item.SerialNumber); 
      self.description = ko.observable(item.Description); 
      self.manufacturer = ko.observable(item.Manufacturer); 
      self.creationDate = ko.observable(item.DateCreated); 
      self.active = ko.observable(item.IsActive); 
     } 

मेरे कोड डेटा का बैकअप सर्वर

self.savePart = function() { 
       $.ajax("/PartKO/UpdatePart", { 
        data: ko.toJSON(self.partDetails), 
        type: "post", 
        contentType: 'application/json', 
        dataType: 'json' 
       }); 
      }; 

मेरे MVC नियंत्रक

[HttpPost] 
    public JsonResult UpdatePart(PartDetail part) 
    { 
     var dbPart = new PartGenericAccessor(); 
     dbPart.ID = part.ID; 
     dbPart.Load(); 
     dbPart.Description = part.Description; 
     dbPart.IsActive = Convert.ToBoolean(part.IsActive); 

     var manufacturers = ManufacturerAccessor.LoadAll<ManufacturerAccessor>(); 
     if (part.Manufacturer != null) 
     { 
      var manufacturer = (from p in manufacturers where p.Name == part.Manufacturer select p.ID).First(); 
      dbPart.ManufacturerID = manufacturer; 
     } 

     dbPart.Save(); 

     return Json("Success!!"); 
    } 

है और मेरे सर्वर साइड मॉडल है भेजने के लिए इस प्रकार है

public class PartDetail 
{ 
    public PartDetail(Guid id, string serial, string description, string manufacturer, DateTime created, bool isActive) 
    { 
     ID = id; 
     SerialNumber = serial; 
     Description = description; 
     Manufacturer = manufacturer; 
     DateCreated = created.ToShortDateString(); 
     IsActive = isActive.ToString(CultureInfo.InvariantCulture); 

    } 

    public Guid ID { get; set; } 

    public string SerialNumber { get; set; } 

    public string Description { get; set; } 

    public string Manufacturer { get; set; } 

    public string DateCreated { get; set; } 

    public string IsActive { get; set; } 
} 

उत्तर

5

आप अपने MVC मॉडल के लिए एक parameterless निर्माता की आपूर्ति करने की जरूरत है:

public class PartDetail 
{ 
    public PartDetail() 
    { ... } 
} 

डेटा सर्वर से वापस आता है, MVC एक खाली वस्तु पैदा करेगा, parameterless निर्माता का उपयोग कर और फिर फोन 'सेट' तरीकों प्रत्येक संपत्ति है कि आने वाले डेटा से मेल खाता सेट करने के लिए

+0

मैं इतना जावास्क्रिप्ट पक्ष है कि मैं एक अच्छी तरह से परिभाषित साथ एक आसान बात याद आती है पर ध्यान केंद्रित किया गया था की एक आधा के बारे में है कि समस्या को हल करने सी # पक्ष पर त्रुटि संदेश। मदद के लिए धन्यवाद। – PlTaylor

+0

मुझे केवल एक ही गलती करने का जवाब पता था! ;-) –

0

एक बार मैं बेवकूफ गलती की:।

नाम नियंत्रक तर्क 'कार्रवाई' - और पोस्ट पर यह allways अशक्त

[HttpPost] 
public JsonResult AddMetaAction(ActionModel action) 

मुझे इस बारे में पता नहीं था और डिबग पर खर्च करते हैं और घंटे :(