如何处理从webgrid中的控制器返回的列值的null异常?

时间:2017-02-02 07:47:25

标签: c# asp.net-mvc webgrid

我正在开发一个MVC应用程序,其中Webgrid用于显示表列。我有一个名为Item的主表和名为Category的辅助表。我试图将Item表的列绑定到View的Webgrid中,但在绑定外部表(Category)列时在webgrid中获得异常。

  

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

模型

public class ItemModel   
{  
    public long id { get; set; }
    public Nullable<long> category_id { get; set; }          
    public virtual Category Category { get; set; }   
}

控制器

List<ItemModel> lstItemModel = new List<ItemModel>();
List<Item> lstItemss = db.Items.ToList();
lstItemss.ForEach(x =>
{
    ItemModel stuModel = new ItemModel();
    stuModel.id= x.id;
    stuModel.Category = x.Category;
    lstItemModel.Add(stuModel);
});
return View(lstItemModel);

在webgrid中查看我有

dataGrid.Column("Category", "Category", format: (Item) => string.IsNullOrEmpty(Item.Category.name)?string.Empty:Item.Category.name)

您可以在视图中看到我正在处理null异常,但它仍然会在Item.Category.name中生成异常,而Item.id会在没有任何问题的情况下进行绑定。

非常感谢

1 个答案:

答案 0 :(得分:1)

感谢评论家伙。解决了这个变化的问题,就像魅力一样。

而不是这个

"<div id='Carousel"+ this.product_id +"' class='carousel slide' style='width: auto; margin: 0 auto'>"+
      "<div class='carousel-inner'>"+
        $.each(this.all_images, function(k,v) {
            "<div class='item'>"+
                " <img src='"+ v +"' alt=''>"+
            "</div>"
        }) +
      "</div> "+
      "<a class='left carousel-control' href='#Carousel"+ this.product_id +"' data-slide='prev'>‹</a>"+
      "<a class='right carousel-control' href='#Carousel"+ this.product_id +"' data-slide='next'>›</a>"+
    "</div>"+
"</div>"+

使用此

string.IsNullOrEmpty(item.Category.name)

所以最后我的视图修改为

(item.Category!= null)