我遇到“mscorlib.dll 中发生‘System.FormatException’类型的异常,但未在用户代码中处理。”附加信息:输入字符串的格式不正确。我有一个下拉列表#Carriers,当用户选择一个项目时不会发生错误,但是,当用户选择下拉列表回到默认值时,它会显示此错误。我需要一种方法来编写 if 语句来检查空值。
[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;
}
在致电之前Convert.ToInt32
方法中,您需要检查字符串参数的值并确保它是可以安全转换为 int 值的值。
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
参数值不是有效的数字字符串值。更新代码以根据需要返回所有内容(无过滤)。
我也建议使用适当的类型。如果 CarrierId 始终为 int 值或无值,您可以考虑使用可为 null 的 int 并避免对字符串调用 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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)