Каждому разработчику приходится сталкиваться с ViewBag и ViewData при работе над проектом Asp.Net Core MVC или Asp.Net MVC 5. ViewBag и ViewData — две основные концепции в Asp.Net Core.

Что такое ViewBag и ViewData в Asp.Net Core?

Проще говоря:

ViewBag и ViewData properties доступны в Microsoft.AspNetCore.Mvcпространстве имен. ViewBag возвращает тип данных dynamic, а ViewData возвращает тип ViewDataDictionary.

Почему мы используем ViewBag и ViewData в Asp.Net Core?

И ViewBag, и ViewData используются для передачи данных из метода действия контроллера в соответствующее представление или связанную с ним страницу макета.

ViewBag и ViewData используются для:

  • Передать данные из метода действия в связанное представление
  • Передать данные из метода действия в связанный макет
  • Передать данные из представления в файл макета
  • частичный вид на вид

Такой способ передачи данных называется слабой привязкой данных.

Давайте разберемся в этих понятиях подробно.

# ViewBag в ядре Asp.Net:

ViewBag — это свойство получения, доступное в пространстве имен Microsoft.AspNetCore.Mvc. ViewBag доступен во всех контроллерах приложения Asp.Net Core. ViewBag работает с dynamic, это означает, что его значение разрешается во время выполнения.

Как присвоить значение ViewBag:

Обычно мы присваиваем значение либо в контроллере, либо в файле представления. В контроллере мы можем использовать ViewBag напрямую, но в файле представления нам нужно использовать синтаксис бритвы.

Чтобы назначить данные ViewBag, нам нужно создать динамическое свойство. Это динамическое свойство можно добавить, как показано ниже:

ViewBag.PropertyName

Теперь у нас есть готовый ViewBag, нам просто нужно присвоить ему значение. И значение может быть присвоено с помощью следующего:

ViewBag.PropertyName = Значение;

Если вы присваиваете значение ViewBag в файле представления (cshtml), вам необходимо использовать синтаксис бритвы.

@{

ViewBag.PropertyName = Значение;

}

Например, тип значения может быть любым — числом, строкой, коллекцией, объектом, анонимным объектом и т. д.

Нажмите здесь, чтобы узнать больше о работе с анонимным объектом в ViewBag.

Как получить ценность от ViewBag:

Получить значение из ViewBag очень просто на странице cshtml. Мы можем получить значение ViewBag, используя синтаксис бритвы.

Мы можем использовать значение ViewBag непосредственно на странице просмотра или присвоить его значение какой-либо другой переменной.

· Если мы хотим использовать значение ViewBag прямо на странице просмотра —

@ViewBag.PropertyName

  • Если нам нужно присвоить значение ViewBag какой-либо другой переменной на странице просмотра —

@{
var variableName = ViewBag.PropertyName
}

Важные моменты, которые следует помнить при работе с ViewBag

  • Мы можем использовать n номеров (несколько) ViewBag в одном методе действия или на странице просмотра.
  • Значение разрешается во время выполнения, это означает, что мы не получим никаких ошибок во время компиляции.
  • Поскольку он динамичен, мы не получим никакого IntelliSense.
  • Если ViewBag содержит объект, то доступ к его значению можно получить с помощью

ViewBag.PropertyName.ObjctPropertyName

  • Если ViewBag содержит набор данных, то итерацию можно применить напрямую.

# ViewData в ядре asp.net

ViewData — это свойство получения и установки, доступное в пространстве имен Microsoft.AspNetCore.Mvc. ViewData также доступен во всех контроллерах приложения Asp.Net Core. ViewData работает с ViewDataDictionary. Этот ViewDataDictinonary работает с концепцией ключ-значение.

Ключ имеет форму string, а значение имеет форму object.

Как присвоить значение ViewData:

Обычно мы присваиваем значение ViewData либо в контроллере, либо в файле представления. В контроллере мы можем использовать ViewData напрямую, но в файле представления нам нужно использовать синтаксис бритвы.

Поскольку ViewDataDictionary работает с концепцией ключа и значения, это означает, что ключ ViewData должен быть допустимой строкой.

ViewData["имя свойства"]

Теперь у нас есть готовые ViewData, нам просто нужно присвоить их значение. И значение имеет тип объекта, это означает, что мы можем назначить любой тип напрямую, используя следующий синтаксис:

ViewData["PropertyName"] = Значение;

Если вы присваиваете значение ViewData в файле представления (cshtml), вам необходимо использовать синтаксис бритвы.

@{

ViewData["PropertyName"] = Значение;

}

Тип значения может быть любым, например, числом, строкой, коллекцией, объектом, анонимным объектом и т. д.

Как получить значение из ViewData:

Получить значение из ViewData очень просто и возможно с помощью синтаксиса бритвы.
Мы можем использовать значение ViewDaa непосредственно на странице просмотра или присвоить его значение какой-либо другой переменной. Помните, что ViewData содержит значение в форме object, поэтому его необходимо преобразовать в определенный тип перед использованием.

  • Если мы хотим использовать значение ViewData непосредственно на странице просмотра

@ViewData["ИмяСвойства"]

  • Если нам нужно присвоить значение ViewData какой-либо другой переменной на странице просмотра

@{
var VariableName = ViewData["PropertyName"]
}

Пример: предположим, что мы передаем список целых чисел в ViewData и хотим использовать его в файле просмотра, а затем

Назначить список ViewData:

А теперь давайте повторим его значение в файле просмотра:

Важные моменты, которые следует помнить при работе с ViewData

  • Мы можем использовать n номеров (несколько) ViewData в одном методе действия или на странице просмотра.
  • Значение разрешается во время выполнения, это означает, что мы не получим никаких ошибок времени компиляции и не получим интеллекта.
  • Прежде чем использовать значение ViewData, нам нужно привести его к нужному типу.

Не забудьте поделиться своими комментариями ниже

Изучите Asp.Net Core MVC совершенно бесплатно:

https://www.youtube.com/watch?v=CP-zbZA5LAc&list=PLaFzfwmPR7_LTXu0Vz9Zz_Y0OMMC7ArHZ