2017-02-02 1 views
1

Я разрабатываю приложение MVC, в котором Webgrid используется для отображения столбцов таблицы. У меня есть одна первичная таблица с именем Item и вторичная таблица с именем Category. Я пытаюсь связать столбцы таблицы Item в Webgrid View, но получаю исключение внутри webgrid, при этом привязывая столбец внешней таблицы (категории).Как обрабатывать null исключение для значений столбцов, возвращаемых контроллером в 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 происходит связывание без каких-либо проблем.

Большое спасибо

+0

в режиме отладки смотрите значение Item.Category, а затем поделиться с us –

+0

Вы не обрабатываете случай, когда 'Category' является' null' - 'string.IsNullOrEmpty (Item.Category.name)' will thr ow исключение, если значение 'Category' равно' null', потому что вы не можете получить доступ к правилу 'name' из' null') –

ответ

1

Спасибо за комментарии ребята. Решили проблему с этим изменением, которое сработало как шарм.

Вместо этого

string.IsNullOrEmpty(item.Category.name) 

использования этого

(item.Category!= null) 

так, наконец, на мой взгляд модифицирована

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

Или вы могли бы просто сделать 'stuModel.Category = x.Category ?? новой категории() и упростить код в представлении –

Смежные вопросы