Если мои TempData [не существует, как мне установить его в значение c - PullRequest
0 голосов
/ 25 января 2020

Ниже приведена следующая ошибка:

str = TempData ["ReportName"]. ToString (); System.NullReferenceException: 'Ссылка на объект не установлена ​​на экземпляр объекта.' System.Web. Mvc .TempDataDictionary.this [string] .get вернул null.

Вот мой лог c: Контроллер A Установите значение tempData и объявите его => перейдите к другому контроллеру B => TempData ["ReportName"] = Value => отлично работает

Несколько контроллеров: z, y => Я не хочу устанавливать значение или объявлять свои TempData, тогда я получаю ошибку.

Возможно, у меня ошибка с синтаксисом ...

    report = SetDefaultsForReportObject(report, previewFlag);

      var model = new ReportResult()
        {
            ReportId = Guid.NewGuid().ToString("N"),
            Report = report,
        };

      if ((TempData["ReportName"]?? "") != null)

        {
            string strPreview = "ProcessJournalPrintPreview";

            string str;
            str = TempData["ReportName"].ToString();
            if (string.Equals(str, strPreview))
            {
                report.Watermark.Text = "Test";
            ViewBag.IsDevExpressReporting = true;
            }
            else 
            {
               report.Watermark.Text = null;
               ViewBag.IsDevExpressReporting = true;
            }
          }                                   
        ViewBag.IsDevExpressReporting = true;
        ViewBag.ReportId = model.ReportId;

1 Ответ

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

Если значение может существовать или не существовать, вам просто нужно проверить, является ли оно нулевым. Более подробно это может выглядеть так:

string str = null;
object report = TempData["ReportName"];
if (report != null)
    str = report.ToString();

Если вы используете более свежую версию C#, вы можете упростить ее до:

string str = TempData["ReportName"]?.ToString();

Просто имейте в виду, что в вашей логике c str также может быть null, поэтому не думайте, что для него установлено значение. Или установите значение по умолчанию:

string str = TempData["ReportName"]?.ToString() ?? "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...