6

मैं पूर्णांक की एक सरणी पारित करने के लिए कोशिश कर रहा हूँ WebAPI लिए लेकिन मैं WebAPI विधिपासिंग सरणी विधि

var postData = { "deletedIds": deletedIds }; 

    $.ajax({ 
     type: "DELETE", 
     traditional: true, 
     dataType: 'json', 
     contentType: 'application/json', 
     cache: false, 
     url: "/api/Management/Models", 
     data: JSON.stringify(postData), 
     success: ModelDeleted, 
     error: ModelNotDeleted 
    }); 

और apiController में में मूल्य नहीं मिल सकता है:

[HttpDelete] 
     public bool DeleteModel(int[] deletedIds) 
     { 
      return modelsRepository.DeleteModels(deletedIds); 
     } 
+0

मैं JSON.stringify को दूर करने की कोशिश की, लेकिन अभी भी काम नहीं कर रहा –

उत्तर

8

आपका कोड मेरे लिए बहुत अच्छा लग रहा है। कृपया "हटाए गए आईडी" ऑब्जेक्ट की संरचना को परिभाषित करें। एक सुझाव deletedIds संपत्ति को प्रारंभ और JSON.stringify दूर करने के लिए नई सरणी() वस्तु का उपयोग करने के लिए है()। इसी तरह के एक प्रश्न ने here पूछा।

संपादित

वेब एपीआई तरीकों की एक किस्म में सामग्री डेटा पार्स करने का समर्थन करता है, लेकिन यह सौदा नहीं करता है कई के साथ सामग्री मूल्यों तैनात। आपकी समस्या का समाधान int [] प्रकार की संपत्ति के साथ व्यूमोडेल बनाना हो सकता है। की तरह कोड के नीचे,

public class SimpleViewModel 
{ 
    public int[] deletedIds{ get; set; } 
} 

//Controller 
[HttpDelete] 
    public bool DeleteModel(SimpleViewModel deletedIds) 
    { 
     return modelsRepository.DeleteModels(deletedIds.deletedIds); 
    } 

और पैरामीटर प्रकार के रूप में उपयोग।

+0

मैं नई सरणी का उपयोग, लेकिन अभी भी WebAPI विधि पैरामीटर पर अशक्त प्राप्त करने की कोशिश –

+0

अपने उत्तर के लिए धन्यवाद, लेकिन सवाल आप संदर्भित जब मैं नियमित रूप से नियंत्रक में कार्रवाई विधि का उपयोग करें, लेकिन WebAPI जब यूआरएल है यह डेटा –

+0

उपयोग फ़ायरबग पद डेटा का परीक्षण करने नहीं मिल सकता है मेरी कोड ठीक काम कर रहा है एक ही नहीं है। – Shashank

0

मुझे लगता है कि stringify बिट अपनी वस्तु अप खिलवाड़ कर रहा है - आप एक चर करने के लिए यह बताए अगर यह उम्मीद स्वरूपण है, यह देखने की कोशिश की है?

आप इस समय पूरी बात stringifying कर रहे हैं:

{ "deletedIds": deletedIds }

जबकि यह है कि क्या आप शायद पोस्ट निकाय के रूप में भेजना चाहते हैं:

{ "deletedIds": JSON.stringify(deletedIds) }

+0

से नहीं समझ सकता और किसी भी तरह से, यदि आपका नियंत्रक विधि पूर्णांक की अपेक्षा करता है, तो उन्हें जेएस में क्यों स्ट्रिंग करें? –

+0

स्ट्रिंगइफ़ सिर्फ एक प्रयास था जिसे मैंने नियमित नियंत्रक में एक परीक्षण क्रिया विधि बनाई और यह एमवीसी मॉडलबिन्डर काम करता है लेकिन वेबपी नहीं !! –

+1

@ मुहम्मद अहम - अनुरोध के साथ भेज रहे सटीक JSON पोस्ट करें। नियंत्रक विधि बिल्कुल हिट है? क्या आपको खाली सरणी मिल रही है? –

2

पिछले, आधारित पर @Shashank उत्तर यह काम किया है और कोड को संशोधित रूप में:

var deletedIds = new Array(); 

deletedIds.push(modelId); 

var postData = { "DeletedIds": deletedIds }; 
$.ajax({ 
    type: "Delete", 
    traditional: true, 
    dataType: 'json', 
    cache: false, 
    url: "/api/Management/Models", 
    data: postData, 
    success: ModelDeleted, 
    error: ModelNotDeleted 
}); 

और apiController:

[HttpDelete] 
     public bool DeleteModels(DeleteViewModel dvm) 
     { 
      return modelsRepository.DeleteModels(dvm.DeletedIds); 
     } 

और DeleteViewModel के लिए:

public class DeleteViewModel 
    { 
     public int[] DeletedIds { get; set; } 
    } 
संबंधित मुद्दे