WebGrid возвращает ошибку «Столбец не существует» - PullRequest
0 голосов
/ 25 июня 2019

У меня есть следующая веб-сетка внутри моего Razor-представления на asp.net MVC 5, и я использую Entity Framework 6.0: -

Теперь веб-сетка работает хорошо на всех страницах, кроме одной, и когда я проверил ее, я обнаружил, что WebGrid вернет эту ошибку: -

Столбец "SDUser.Department.Definition.DEPTNAME" не существует.

Так что, похоже, некоторые элементы на этой странице не имеют этих навигационных свойств SDUser.Department.Definition.DEPTNAME, так как я могу решить эту проблему?

РЕДАКТИРОВАТЬ: - Вот мой обновленный код, где я добавил If / Else, но все равно я получаю ту же ошибку: -

1 Ответ

1 голос
/ 25 июня 2019

Прежде чем добавлять новый WebGridColumn в gridcolumns, вы проверяете, присутствует ли свойство DEPTNAME или нет.

@if(@Model.Content.FirstOrDefault().SDUser.Department.Definition.HasProperty("DEPTNAME"))
{
    gridcolumns.Add(new WebGridColumn()
    {
        ColumnName = "SDUser.Department.Definition.DEPTNAME",
        Header = Html.DisplayNameFor(model => model.Content.FirstOrDefault().SDUser.Department.Definition.DEPTNAME).ToString(),
        CanSort = true
    });
}

Кроме того, если вы хотите проверить, есть ли его значение или нет, используйте это

@if(@Model.Content.FirstOrDefault().SDUser.Department.Definition.HasProperty("DEPTNAME") && @Model.Content.FirstOrDefault().SDUser.Department.Definition.GetProperty("productSalePrice").Value != String.Empty)
{
    //your code 
}

Примечание: на самом деле я не знаю вашу иерархию модели, я считаю, чтоконкретная страница не имеет свойства DEPTNAME.(вы можете изменить в соответствии с вашими требованиями)

...