2017-02-16 13 views
11

मैं एक नया एपीआई कि मैं Asp.Net कोर के साथ निर्माण कर रहा हूँ मिल गया है, और मैं एक अंतिम बिंदु पर पोस्ट किए गए किसी भी डेटा प्राप्त नहीं कर सकता।Asp.Net कोर पोस्ट FromBody हमेशा अशक्त

[HttpPost] 
[Route("StudentResults")] 
public async Task<IActionResult> GetStudentResults([FromBody]List<string> userSocs, [FromBody]int collegeId) 
{ 
    var college = await _collegeService.GetCollegeByID(collegeId); 
    // var occupations = await _laborMarketService.GetOccupationProgramsBySocsAndCollege(userSocs, college); 
    return Ok(); 
} 

और यहाँ क्या मेरी पेलोड कि मैं डाकिया के माध्यम से भेज रहा लगता है:

{ 
    "userSocs": [ 
      "291123", 
      "291171", 
      "312021", 
      "291071", 
      "152031", 
      "533011" 
     ], 
    "collegeId": 1 
} 

मुझे यकीन है कि मैं डाकिया है बना रही हूँ

यहाँ की तरह क्या अंत बिंदु दिखाई देता है सामग्री के प्रकार = एप्लिकेशन/जेसन के साथ एक पोस्ट के रूप में सेट करें। मैं गलत क्या कर रहा हूँ>? क्योंकि तुम केवल एक ही वस्तु के अंदर अपने सभी पोस्ट चर संपुटित करने की जरूरत है

उत्तर

20

तुम हमेशा null मिलता है। इस तरह:

public class MyPostModel { 
    public List<string> userSocs {get; set;} 
    public int collegeId {get; set;} 
} 

और फिर

public async Task<IActionResult> GetStudentResults([FromBody] MyPostModel postModel) 
+0

कि .NET 4.5 में कोई मुद्दा नहीं था, यह था? मैं कसम खाता हूं कि मुझे एक पोस्ट –

+3

@AlexKibler में एकाधिक पैरा भेजना याद रखें: केवल तभी जब आप फॉर्म के माध्यम से पैरामीटर भेजते हैं या क्वेरी प्राप्त करते हैं। आपके शरीर में केवल एक ही मॉडल हो सकता है, इसलिए किसी भी गैर-मूल प्रकार (int, string, आदि) को पहले मॉडल में क्रमबद्ध किया जाएगा। एएसपी.नेट कोर (4.5 या .NET कोर के इंडेंटेंट) में आपके पास केवल एक ही बॉडीबॉडी हो सकती है (वेबएपीआई 2.x में यह अंतर्निहित था), क्योंकि वेबएपीआई और एमवीसी अब एक ही ढांचे में विलय कर रहे हैं, जहां वे पहले अलग थे – Tseng