内联如果声明不起作用

时间:2011-09-28 21:25:39

标签: c# jquery asp.net-mvc-2 jqgrid if-statement

出于某种原因,当我将三元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语句吗?

2 个答案:

答案 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,则只发出一个空值。