2015-02-22 11 views
5

मैं सेटअप मार्ग होना जरूरी: [रूट ("{आईडी}/उपयोगकर्ताओं/खोज/{खोज}")] और संबद्ध कार्रवाई है: SomeAction (पूर्णांक आईडी, स्ट्रिंग टेक्स्ट)वेब एपीआई 2 रिक्त स्ट्रिंग पैरामीटर प्राप्त

सेवा में निम्न कार्य है। आईडी = {आईडी} के साथ संसाधन के लिए और इस संसाधन के उपयोगकर्ता उन उपयोगकर्ताओं को प्राप्त करते हैं जो {search} शब्द (उपयोगकर्ता नाम, ईमेल इत्यादि) से मेल खाते हैं।

{search} का मूल्य हो सकता है ताकि सेवा केवल मिलान करने वाली संस्थाओं को लौटा दे या उसके पास कोई मान (खाली स्ट्रिंग या शून्य) न हो, तो सेवा सब कुछ लौटाती है।

एक मूल्य के साथ भाग के लिए यह ठीक काम करता है। दूसरे भाग के लिए मुझे रिक्त स्ट्रिंग से मेल खाने वाले अनुरोध को सेट करने के लिए कुछ नहीं मिल रहा है।

मैं करने की कोशिश की है: 1/उपयोगकर्ताओं/खोज/बातिल {खोज} = "अशक्त" 1/उपयोगकर्ताओं/खोज/मार्ग से मेल नहीं खाता 1/उपयोगकर्ताओं/खोज से मेल नहीं खाती मार्ग

है किसी को भी संकेत है कि यह कैसे किया जा सकता है?

अद्यतन: मैं कार्रवाई को बदलने के लिए प्रयास किया है: SomeAction (मॉडल मॉडल) जहां मॉडल कोई भाग्य के साथ है

public class ApplicationUserSearchModel 
{ 
    [Required] 
    public int Id { get; set; } 
    [Required(AllowEmptyStrings = true)] 
    public string MatchText { get; set; } 
} 

के बाद से मैं नहीं: SomeAction (पूर्णांक आईडी, स्ट्रिंग पाठ) के साथ पता करें कि यूआरएल से मेल खाने के लिए क्या भेजना है।

उत्तर

4

आपको पैरामीटर को ? के साथ रूट में वैकल्पिक रूप से चिह्नित करने के लिए टैग करना चाहिए, और इसे अपनी क्रिया में डिफ़ॉल्ट रूप से null पर सेट करना चाहिए।

[Route("{id}/users/search/{search?}")] 
public HttpResponseMessage Search(int id, string search = null)  

मैं मूल रूप से सोचा था कि मार्ग/कार्रवाई पैरामीटर नाम मुद्दे थे, लेकिन मैं गलत था। यहां पिछला उत्तर दिया गया है:

आपकी रूट परिभाषा में पैरामीटर नाम और आपकी कार्रवाई मेल नहीं खाती है, जो आपकी समस्या का कारण बनती है।

[Route("{id}/users/search/{search}")] 
public HttpResponseMessage Search(int id, string text) 

आप अपने Route विशेषता में पैरामीटर नाम से मिलान करने के text से search करने के लिए अपने कार्रवाई में string पैरामीटर अपडेट हो जाएगा।

+0

समस्या स्वयं सेवा नहीं है। यह ठीक काम करता है। उपर्युक्त मार्ग दिया गया है कि आप इस सेवा को {खोज} के साथ बाध्यकारी खाली स्ट्रिंग के साथ कैसे कहते हैं! – Mantzas

+0

मैं इसे आज़माउंगा लेकिन मुझे लगता है कि मेरे पास पहले से ही कोई भाग्य नहीं है। फिर भी मुझे नहीं पता कि इस परिणाम को प्राप्त करने के लिए सेवा को कैसे कॉल किया जाए। कोई अंतर्दृष्टि आप इसे कैसे करते हैं, क्योंकि आपका काम काम प्रतीत होता है? – Mantzas

+0

आपको पर कॉल करके इस मार्ग तक पहुंचने में सक्षम होना चाहिए http: // वेबसाइट/1234/उपयोगकर्ता/खोज या प्राप्त करें http: // वेबसाइट/1234/उपयोगकर्ता/खोज/प्रथम नाम% 20lastname – MattHughesATL

संबंधित मुद्दे