Как правильно получить доступ к свойствам ViewModel для условия в .cshtml - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь применить «фильтр» в сетке пользовательского интерфейса кендо, в котором, если свойство ViewModel имеет значение true, показать значение ячейки с адресом ссылки, если false, то просто показать значение без адреса. ViewModel для этой сетки имеет свойство IsRecorded, которое используется в качестве фильтра для ранее объясненного.

Но по какой-то причине я продолжаю получать следующую ошибку, только когда я запускаю проект и вхожу в модуль, где Сетка Kendo:

System.NullReferenceException: 'Ссылка на объект не установлена ​​для экземпляра объекта.'

System.Web. Mvc .WebViewPage.Model.get вернула ноль.

А это мой кендо .cs html

 @(Html.Kendo().Grid<PersonReportViewModel>()
      .Name("Report")
      .Columns(columns =>
      {
          columns.Bound(m => m.Name)
              .HeaderHtmlAttributes(new { @class = "Name" }).HtmlAttributes(new { @class = "Name" });

          if (Model.IsRecorded)
          {
              columns.Bound(m => m.Id)
                  .HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" })
                  .ClientTemplate("<a href=\"SomeAdress"</a>");
          }
          else
          {
              columns.Bound(m => m.Id)
                  .HeaderHtmlAttributes(new { @class = "Id" }).HtmlAttributes(new { @class = "Id" });
          };

Я неправильно обращаюсь к нему с классом Model в условии if? Странная часть заключается в том, что при использовании модели. он показывает мне все свойства, которые имеет viewmodel, как будто он правильно обращается к нему, но возвращает нуль. Правильно ли выполнено условие?

Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 29 января 2020

Model.IsRecorded будет рассматривать модель страницы, а не модель сетки (PersonReportViewModel). Пара способов достижения этого показана здесь . Я бы использовал ClientTemplate:

columns.Template(t => {}).ClientTemplate(
    "# if (IsRecorded) {#"
  + "<a href=\'SomeAdress'</a>"
  + "# } else { #"
  + @"<span>#=JobId#</span>"
  + "# } #")
.HeaderHtmlAttributes(new { @class = "Id" })
.HtmlAttributes(new { @class = "Id" })
.Title("Job Id");

Ошибка консоли произойдет, если у вас есть ошибки, такие как отсутствие # или {.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...