c# titel Wie behebt man eine System.FormatException, wenn die Dropdownliste auf Standard gesetzt ist?



title-tag (1)

Bevor Sie die Convert.ToInt32 Methode aufrufen, müssen Sie den Wert des Zeichenfolgenparameters überprüfen und sicherstellen, dass es sich um einen Wert handelt, der sicher in einen int-Wert konvertiert werden kann.

Int32.TryParse Methode wird nützlich sein

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);
}

Der obige Code gibt derzeit eine leere Liste von SelectListItem zurück, wenn der carrierId Parameterwert kein gültiger numerischer Zeichenfolgenwert ist. Aktualisieren Sie den Code, um bei Bedarf alles zurückzugeben (keine Filterung).

Ich schlage auch vor, die passenden Arten zu verwenden . Wenn carrierId immer ein int-Wert oder kein Wert sein soll, sollten Sie einen nullbaren int-Wert verwenden und den TryParse-Methodenaufruf bei string vermeiden.

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
}

Ich habe "Eine Ausnahme vom Typ 'System.FormatException' ist in mscorlib.dll aufgetreten, wurde aber nicht im Benutzercode behandelt." Zusätzliche Informationen: Die Eingabezeichenfolge hatte kein richtiges Format. Ich habe eine Dropdown-Liste, #Carriers, wenn Benutzer ein Element auswählt, keine Fehler auftreten, jedoch, wenn Benutzer die Dropdown-Liste zurück zur Standardeinstellung wählt, zeigt es diesen Fehler an. Ich brauche eine Möglichkeit, eine if-Anweisung zu schreiben, um nach Nullwerten zu suchen.

 [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