2012-05-31 13 views
7

मैं नया एएसपीनेट वेब एपीआई का उपयोग कर रहा हूं और वैकल्पिक पैरामीटर पास करना चाहता हूं, मुझे विश्वास है कि आपको एक विशेषता को पॉप्युलेट करने की आवश्यकता है ताकि यह मुझे पैरा का उपयोग करके अनुमति दे सके? प्रतीक।asp.net webapi: वैकल्पिक पैरामीटर कैसे पास करें?

इससे पहले कि यह यूरी टेम्पलेट्स के साथ किया गया था, मुझे विश्वास है।

क्या किसी के पास कोई उदाहरण है या किसी भी मदद की वास्तव में सराहना की है।

मैं वर्तमान यूआरएल जो के रूप में पूर्णांक मैं

चाहते मेरी नियंत्रक में आता है में आईडी गुजर रहा लेकिन मैं कुछ तारीखों

पास करनी होगी
+0

क्या आप अपना परिदृश्य क्या कुछ और स्पष्ट कर सकते हैं? आप किस क्रिया विधि हस्ताक्षर की अपेक्षा करते हैं? आपने क्या रूटिंग परिवर्तन किए हैं? वेब एपीआई रूटिंग मूलभूत बातें के बारे में कुछ जानकारी यहां उपलब्ध है: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api – marcind

उत्तर

6

आप एक नल प्रकार का उपयोग करके एक पैरामीटर वैकल्पिक बना सकते हैं:

public class OptionalParamsController : ApiController 
{ 
    // GET /api/optionalparams?id=5&optionalDateTime=2012-05-31 
    public string Get(int id, DateTime? optionalDateTime) 
    { 
     return optionalDateTime.HasValue ? optionalDateTime.Value.ToLongDateString() : "No dateTime provided"; 
    } 
} 
+0

धन्यवाद इयान, महान काम किया। – Martin

3

इयान, जो सही है द्वारा प्रदान की पिछले जवाब देने के लिए इसके अलावा, आप भी मूलभूत मूल्यों जो मुझे लगता है जो कि क्या कुछ पारित किया गया था या नहीं की जांच किए टाल एक क्लीनर विकल्प है प्रदान कर सकते हैं। बस एक और विकल्प।

public class OptionalParamsController : ApiController 
{ 
    // GET /api/optionalparams?id=5&optionalDateTime=2012-05-31 
    public string Get(int id, DateTime optionalDateTime = DateTime.UtcNow.Date) 
    {...} 
} 
+3

वैकल्पिक पैरामीटर संकलित-समय स्थिर होना चाहिए, डेटटाइम कभी संकलन-समय स्थिर नहीं होता है। – frapontillo

+0

ओह, हाँ आप सही हैं। एक डेटाटाइम को वैकल्पिक पैरामीटर के रूप में प्रदान नहीं किया जा सकता है और मुझे इसे उदाहरण के रूप में उपयोग नहीं करना चाहिए था। हालांकि, इस तरह से अन्य डेटाटाइप का उपयोग किया जा सकता है। – AlexGad

+0

मेरी वर्तमान प्रोजेक्ट में, यदि मैं डिफ़ॉल्ट मान प्रदान नहीं करता हूं, तो रूट को हल नहीं किया जाता है, 404 (नहीं मिला) HTTP त्रुटि लौटाता है। विधि हस्ताक्षर 'शून्य माईएक्शन (लंबी आईडी, लम्बाई? मान 1 = -1, लंबा? मूल्य 2 = -1) होना चाहिए ... यदि मैं डिफ़ॉल्ट मान प्रदान नहीं करता तो यह क्वेरी स्ट्रिंग पर पारित होने पर विफल रहता है! – Loudenvier

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