出于某种原因,当我将三元if语句添加到这段代码时,会抛出NullPointerException。我不确定为什么......任何想法?这是jqGrid的方法 - 返回Json数据。
var gridModel = from entity in vendorList.AsQueryable()
select new
{
VendorId = "<a href='/Admin/DetailsPlan/" + entity.VendorId + "'><img src='/Images/next_icon_sm.png' class='icon' alt='View Vendor' /></a>",
VendorNm = entity.VendorNm,
Phone = (entity.Phone.Length < 5) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(entity.Phone)) : entity.Phone,
City = entity.City,
State = entity.LkState.StateAbbr
};
你能在那个位置找到三元if语句吗?
答案 0 :(得分:2)
var gridModel = from entity in vendorList.AsQueryable()
let unformattedPhone = entity.Phone??string.Empty
select new
{
VendorId = "<a href='/Admin/DetailsPlan/" + entity.VendorId + "'><img src='/Images/next_icon_sm.png' class='icon' alt='View Vendor' /></a>",
VendorNm = entity.VendorNm,
Phone = (unformattedPhone.Length < 5) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(unformattedPhone)) : unformattedPhone,
City = entity.City,
State = entity.LkState.StateAbbr
};
这可以解决您的问题。
答案 1 :(得分:1)
一个问题,是entity.Phone null?如果是这样,那就是原因。
旁注:我不得不说,这是存储电话号码的奇怪方式..
更新
问题在于“entity.Phone.Length”部分。如果Phone为null,则您无法访问它的长度属性...因此出错。所以你需要添加一个空测试。类似的东西:
Phone = ((entity.Phone != null) && (entity.Phone.Length < 5)) ? String.Format("{0:(###) ###-####}", Convert.ToInt64(entity.Phone)) : entity.Phone
这样,如果它为null,则只发出一个空值。