c# Dropdownlist डिफ़ॉल्ट पर सेट है जब एक System.FormatException को ठीक करने के लिए?



asp.net-mvc visual-studio-2015 (1)

Convert.ToInt32 विधि को कॉल करने से पहले, आपको स्ट्रिंग पैरामीटर के मान की जांच करनी होगी और सुनिश्चित कर लें कि यह कुछ मान है जो सुरक्षित रूप से एक इंट मान में कनवर्ट किया जा सकता है।

Int32.TryParse विधि वह आसान होगा

public JsonResult LoadAccsByCarrierId(string carrierid)
{
     int id;
     var accsData =new List<SelectListItem>();
     if (Int32.TryParse(carrierid, out id))
     {
        var accsList = this.GetAccs(id);
        accsData = accsList.Select(m => new SelectListItem()
        {
            Text = m.AccessoryName,
            Value = m.AccessoryID.ToString(),
        }).ToList();
     }
     return Json(accsData, JsonRequestBehavior.AllowGet);
}

उपरोक्त कोड वर्तमान में SelectListItem की एक खाली सूची देता है जब carrierId पैरामीटर मान एक मान्य संख्यात्मक स्ट्रिंग मान नहीं है। आवश्यकतानुसार प्रत्येक चीज (कोई फ़िल्टरिंग) वापस करने के लिए कोड अपडेट करें

मैं भी उपयुक्त प्रकारों का उपयोग करने का सुझाव देता हूं अगर वाहक आईडी हमेशा एक पूर्णांक मान या कोई मूल्य नहीं होने जा रहा है, तो आप नलएबल इंट का उपयोग करने और स्ट्रिंग पर TryParse विधि कॉल से बचने पर विचार कर सकते हैं।

public ActionResult LoadAccByCarrierId(int? carrierId)
{
  if(carrierId!=null)
  {
       // to do : use carriedId.Value to do the Filtering
  }
  else
  {
    return something else 
  }
  // to do  : Return something
}

मैं "अपवाद 'टाइप कर रहा हूं' system.FormatException 'mscorlib.dll में हुआ था लेकिन इसे उपयोगकर्ता कोड में संभाला नहीं गया था।" अतिरिक्त जानकारी: इनपुट स्ट्रिंग एक सही प्रारूप में नहीं था। मेरे पास एक ड्रॉपडाउन सूची है, # क्रियर्स, जब उपयोगकर्ता कोई आइटम का चयन करता है, कोई त्रुटि नहीं होती, हालांकि, जब उपयोगकर्ता ड्रॉपडाउन सूची को डिफ़ॉल्ट पर वापस चुनता है तो यह त्रुटि दिखाती है रिक्त मानों की जांच करने के लिए मुझे एक बयान लिखने का एक तरीका चाहिए

 [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult LoadAccsByCarrierId(string carrierid)
    {

            var accsList = this.GetAccs(Convert.ToInt32(carrierid));
            var accsData = accsList.Select(m => new SelectListItem()
            {
                Text = m.AccessoryName,
                Value = m.AccessoryID.ToString(),
            });
            return Json(accsData, JsonRequestBehavior.AllowGet);
    }

     [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult LoadPhonesByCarrierId(string carrierid, string emailaddress)
    {
        int id;
        var phonesData = new List<SelectListItem>();
        if (Int32.TryParse(carrierid, out id))
        {
            var phonesList = this.GetPhones(id, emailaddress);
            phonesData = phonesList.Select(m => new SelectListItem()
            {
                Text = m.Name,
                Value = m.PhoneID.ToString(),
            }).ToList();
            return Json(phonesData, JsonRequestBehavior.AllowGet);
        }
        else
            return null; 
    }




visual-studio-2015