×
=0) { let js = text.slice(pos1, pos2); + '<\/' + "script" + '>'; arrText.push(js); // next pos1 = pos2; continue; } } } break; } return arrText; } function OpenDialog(parentDiv, urlContent) { parentDiv = document.getElementById('modal-background'); // new !!!!!!! parentDiv.appendChild(document.getElementById('modal-template')); document.getElementById('modal-background').style.display = "block"; document.getElementById('modal-template').style.display = "flex"; // !!!!! document.getElementById('modal-body').innerHTML = ""; post_url(urlContent, "", function(text_from_server) { var element = document.getElementById('modal-body'); element.innerHTML = text_from_server; // add scripts var arrJSText = get_scripts(text_from_server); for (var i=0; i
dir.by
Праздники ...
Праздники ...
День Святого Валентина (14 Февраля)
Концерты, выставки, цирки ...
Концерты, выставки, цирки ...
Балет-сказка "Петя и волк" г. Минск 10 января, 22 марта 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Обучение плаванию (набор в группы)
Спорт занятие
Компьютеры, игры, программирование
Компьютеры, игры, программирование
Объявления ...
Объявления ...
Механизм рулевой с распределителем 64229-3400010-60
Объявление
Форум (ваши вопросы, обсуждение)
Форум (ваши вопросы, обсуждение)
Поиск
Программирование, разработка, тестирование
→
ASP.NET MVC (web сайт на архитектуре Model-View-Controller)
→
Передаем данные из контроллера в представление в ASP.NET MVC. Используем ViewBag, ViewData, TempData, Model (строго типизированное представление)
Посмотрели
13401
раз(а)
Передаем данные из контроллера в представление в ASP.NET MVC
последнее обновление: 3 октября 2018
Существуют различные способы передачи данных из контроллера в представление:
Способ 1
Объект
ViewBag
. Это объект с динамическими свойствами (то есть во время выполнения программы мы можем задавать любые свойства и использовать их).
Способ 2
Объект
ViewData
. Это map объект (ключ - значение).
Способ 3
Объект
TempData
. Это map объект (ключ - значение).
Способ 4
Через
Model
(строго типизированное представление)
Способ 1
Объект ViewBag
В объект
ViewBag
мы можем добавить любое количество свойств. Обращение к свойствам идет через символ '.'
Создаем
новое приложение ASP.NET MVC ...
и напишем код:
C#
Контроллер
Controllers/
HomeController.сs
using
System;
using
System.Web.Mvc;
using
System.Collections.Generic;
namespace
WebApplication2.Controllers
{
public
class
HomeController
: Controller
{
public
ActionResult
Index
()
{
// ViewBag может содержать любые свойства
ViewBag
.myText =
"Hello"
;
ViewBag
.myValues =
new
List
<
int
>{10, 20, 50};
ViewBag
.aaa = 456789;
return
View();
}
}
}
Html
Представление
Views/Home/
Index.cshtml
@{
Layout = null;
}
<!DOCTYPE
html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Index
</title>
</head>
<body>
<div>
<!-- показываем ViewBag.MyText на экране -->
@
ViewBag
.MyText
<br
/>
<!-- показываем ViewBag.myValues на экране -->
@foreach(int value
in
ViewBag
.myValues)
{
@value
<br
/>
}
<br
/>
<!-- показываем ViewBag.aaa на экране -->
@
ViewBag
.aaa
</div>
</body>
</html>
На заметку!
Символ
@
в файле представления Index.cshtml означает, что используется
движок Razor для представления...
Способ 2
Объект ViewData
Объект
ViewData
похож на
ViewBag
. Только в объекте
ViewData
обращение к свойствам идет через ["ИмяСвойства"]
Создаем
новое приложение ASP.NET MVC ...
и напишем код:
C#
Контроллер
Controllers/
HomeController.сs
using
System;
using
System.Web.Mvc;
using
System.Collections.Generic;
namespace
WebApplication2.Controllers
{
public
class
HomeController
: Controller
{
public
ActionResult
Index
()
{
// ViewData может содержать любые данные
ViewData
[
"myText"
] =
"Hello"
;
ViewData
[
"myValues"
] =
new
List
<
int
> { 10, 20, 50 };
ViewData
[
"aaa"
] = 456789;
return
View();
}
}
}
Html
Представление
Views/Home/
Index.cshtml
@{
Layout = null;
}
<!DOCTYPE
html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Index
</title>
</head>
<body>
<div>
<!-- показываем ViewData[
"MyText"
] на экране -->
@
ViewData
[
"MyText"
]
<br
/>
<!-- показываем ViewData[
"myValues"
] на экране -->
@foreach(int value
in
(List
<int>
)
ViewData
[
"myValues"
])
{
@value
<br
/>
}
<br
/>
<!-- показываем ViewData[
"aaa"
] на экране -->
@
ViewData
[
"aaa"
]
</div>
</body>
</html>
На заметку!
Символ
@
в файле представления Index.cshtml означает, что используется
движок Razor для представления...
Способ 3
Объект TempData
Объект
TempData
похож на
ViewData
.
Но значение
TempData
можно получить в пределах одного запроса. То есть если вы установили в методе Index, то в представлении Index вы можете вывести сколько угодно раз, но если это значение выводится и на других представлениях, то в них вы уже не сможете его получить - так как оно уже получено.
В объекте
TempData
обращение к свойствам идет через ["ИмяСвойства"]
Создаем
новое приложение ASP.NET MVC ...
и напишем код:
C#
Контроллер
Controllers/
HomeController.сs
using
System;
using
System.Web.Mvc;
using
System.Collections.Generic;
namespace
WebApplication2.Controllers
{
public
class
HomeController
: Controller
{
public
ActionResult
Index
()
{
// TempData может содержать любые данные
TempData
[
"myText"
] =
"Hello"
;
TempData
[
"myValues"
] =
new
List
<
int
> { 10, 20, 50 };
TempData
[
"aaa"
] = 456789;
return
View();
}
}
}
Html
Представление
Views/Home/
Index.cshtml
@{
Layout = null;
}
<!DOCTYPE
html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Index
</title>
</head>
<body>
<div>
<!-- показываем TempData[
"MyText"
] на экране -->
@
TempData
[
"MyText"
]
<br
/>
<!-- показываем TempData[
"myValues"
] на экране -->
@foreach (int value
in
(List
<int>
)
TempData
[
"myValues"
])
{
@value
<br
/>
}
<br
/>
<!-- показываем TempData[
"aaa"
] на экране -->
@
TempData
[
"aaa"
]
</div>
</body>
</html>
На заметку!
Символ
@
в файле представления Index.cshtml означает, что используется
движок Razor для представления...
Способ 4
Через Model (строго типизированное представление)
Строго типизированное представление
это представление с указанием типа модели в начале файла.
Передача данных из контроллера в представление
через Model
означает следующее:
в файле контроллера
ИмяФайла.cs
НашеЗначение
передаем в
return View(
НашеЗначение
);
в файле представления
ИмяФайла.cshtml
1) в самом верху файла представления указываем тип модели
@model
НашТип
2) В любом месте в файле представления мы можем использовать слово
Model
Рассмотрим пример
Создаем
новое приложение ASP.NET MVC ...
и напишем код:
C#
Контроллер
Controllers/
HomeController.сs
using
System;
using
System.Web.Mvc;
using
System.Collections.Generic;
namespace
WebApplication2.Controllers
{
public
class
HomeController
: Controller
{
public
ActionResult
Index
()
{
List
<
int
>
values
=
new
List
<
int
>() { 1, 6, 7 };
// передаем Наше значение
return
View(values)
;
}
}
}
Html
Представление
Views/Home/
Index.cshtml
<!-- указываем тип для Model -->
@
model
List
<int>
@{
Layout = null;
}
<!DOCTYPE
html>
<html>
<head>
<meta
name=
"viewport"
content=
"width=device-width"
/>
<title>
Index
</title>
</head>
<body>
<div>
<!-- Model содержит наше значение -->
@foreach (int value
in
Model
)
{
@value
<br
/>
}
</div>
</body>
</html>
На заметку!
Символ
@
в файле представления Index.cshtml означает, что используется
движок Razor для представления...
Что такое слово
Model
в файле представления?
На самом деле файл представления это класс
WebViewPage
В классе
WebViewPage
есть член-класса
Model
Model
имеет
НашТип
объявленный в самом верху файла представления
@model
НашТип
Model
содержит
НашеЗначение
переданное в файле Контроллера в
return View(
НашеЗначение
);
Другими словами
мы объявили тип объекта модели представления при помощи
@model
(маленькая m)
доступ к значению получаем при помощи
Model
(заглавная M).
Для тех кто хочет знать, где находятся ViewBag, ViewData, TempData, Model
// базовый класс контроллера
class
ControllerBase
{
...
public
dynamic
ViewBag
= new
ExpandoObject
();
public
ViewDataDictionary
ViewData
= new
ViewDataDictionary
();
public
TempDataDictionary
TempData
= new
TempDataDictionary
();
...
}
// базовый класс представления
class
WebViewPage
{
...
public
dynamic
ViewBag
= new
ExpandoObject
();
public
ViewDataDictionary
ViewData
= new
ViewDataDictionary
();
public
TempDataDictionary
TempData
= new
TempDataDictionary
();
public Object
Model
;
...
}
На заметку для разработчиков!
Как правило, основные данные передаются через
Model
(способ 4).
Вспомогательная информация передается через
ViewBag
(способ 1),
ViewData
(способ 2),
TempData
(способ 3).
← Предыдущая тема
Создаем новое приложение ASP.NET MVC
Следующая тема →
Что такое View (представление) и операторы Razor в ASP.NET MVC
Ваши Отзывы ... комментарии ...
Вашe имя
Ваш комментарий
(www ссылки может добавлять только залогиненный пользователь)
+ картинку
Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
Объявления
Объявления
•
Что такое MVC в ASP.NET ?
•
Создаем новое приложение ASP.NET MVC
Контроллер (Controller)
•
Передаем данные из контроллера в представление в ASP.NET MVC. Используем ViewBag, ViewData, TempData, Model (строго типизированное представление)
Представление (View)
•
Что такое View (представление) и операторы Razor в ASP.NET MVC
•
Создаем переменную и выводим на экран во View в ASP.NET MVC
•
@using внутри View в ASP.NET MVC
•
@foreach(var item in arr) {...} внутри View в ASP.NET MVC
•
@DateTime.Now внутри View в ASP.NET MVC
•
Как узнать имя контроллера внутри View в ASP.NET MVC
•
Отображаем [DateTime | только Date | только Time] в нужном формате в ASP.NET MVC
Разновидности представлений (View)
•
Строго типизированное представление (Strongly-typed-view) в ASP.NET MVC
...
•
Мастер представление (Master View) с использованием @RenderBody() в ASP.NET MVC
•
Мастер представление (Master View) с использованием @RenderBody() и дополнительных секций @RenderSection в ASP.NET MVC
...
•
Частичное представление (Partial View) в ASP.NET MVC. Встраиваем частичное представление @Html.Partial("My1") и @{ Html.RenderPartial("My1");}
•
При нажатии submit внутри partial view происходит ajax вызов метода controller. Метод controller должен возвращать PartialView(model) | ASP.NET MVC
...
•
Строго типизированное частичное представление (Strongly-typed partial view) в ASP.NET MVC
Создаем папку ViewModels. Это хороший стиль программирования для передачи данных из Controller во View
•
Создаем папку ViewModels. Создаем свой класс в папке ViewModels. Это хороший стиль программирования для передачи данных из Controller во View. Web приложение ASP.NET MVC
Атрибуты. Используем атрибуты во ViewModels(чтобы показать кнопки, combo в представлении). Используем атрибуты в Controller (чтобы улучшить методы)
•
Аттрибут [Display(Name = "...")] описывается в C# классе и используется в @Html.LabelFor, @Html.DisplayNameFor в ASP.NET MVC
•
Аттрибут [Required(ErrorMessage = "Пожалуйста, введите название")] описывается для свойства в C# классе и требует чтобы свойство было заполнено, если не заполнено на экране ошибка ErrorMessage в ASP.NET MVC
•
Аттрибут [Remote("IsValidAuthor", "Home", ErrorMessage = "Enter correct author of book")] описывается для свойства в C# классе и проверяет это свойство на правильность на сервере через метод IsValidAuthor в conroller Home, если метод возвращает false, то на экране будет ошибка ErrorMessage в ASP.NET MVC
•
Аттрибут [HiddenInput(DisplayValue = false)] описывается в C# классе и используется в @Html.HiddenFor в ASP.NET MVC
Маршрутизация
Ссылки и перенаправления в представлении
•
@Html.ActionLink внутри View в ASP.NET MVC
•
@Html.RouteLink внутри View в ASP.NET MVC
•
@Url.Action внутри View в ASP.NET MVC
•
@Url.RouteUrl внутри View в ASP.NET MVC
•
@Url.Content внутри View в ASP.NET MVC
Bootstrap в MVC
•
Добавляем и подключаем Bootstrap (css, js файлы) в ASP.NET MVC проект
JQuery в МVС
•
Подключаем JQuery в ASP.NET MVC проект
•
С помощью JQuery получаем содержимое View (представления) в ASP.NET MVC. Пример: $.get("/Home/Index", function (data) {...}) ...
Класс AjaxExtensions в МVС (асинхронное получение данных)
•
Подключаем jQuery & AJAX в ASP.NET MVC проект
•
С помощью Ajax.ActionLink получаем содержимое View (представления) и вставляем в div в ASP.NET MVC
•
Объект Ajax (это класс AjaxExtensions) в ASP.NET МVС
База данных (Entity Framework) в ASP.NET MVC
•
Entity Framework в приложении ASP.NET MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Аутентификация (login/register/logout)
•
Что такое аутентификация (login/register/logout) в ASP.NET MVC ?
•
Пример: Аутентификация (login/register/logout) в ASP.NET MVC используя аутентификацию форм FormsAuthentication.SetAuthCookie(model.Name, true);
Авторизация (admin/user/...)
•
Что такое авторизация (admin/user/...) в ASP.NET MVC ?
•
Пример: Авторизация (admin/user/...) в ASP.NET MVC используя провайдер ролей RoleProvider
Пишем приложение "Планирование дел, задач" в ASP.NET MVC
•
Создаем пустое приложение "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Добавляем библиотеки Bootstrap & jQuery в приложение "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Создаем мастер-представление (главное меню & логин кнопки используя Bootstrap) в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Добавляем контроллер "Home" и представление "Index" (главная страница в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Добавляем библиотеку Entity Framework и создаем соединиение с Базой данных в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Аутентификация (login/register/logout) в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Добавляем класс "Task" для сохранения дел, задач в базу данных в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
•
Добавление nUnit в приложении "Планирование дел, задач" | ASP.NET MVC | Visual Studio 2017
Дополнительные темы, вопросы
•
Чем ASP.NET MVC лучше ASP.NET Web Forms ?
•
Выбор между ASP.NET Core и ASP.NET ?
•
Как выбрать интернет браузер чтобы в нем запускался .NET проект
•
Как узнать локальный адрес и порт вашего ASP.NET MVC приложения ?
•
Scripts\index.d.ts(8,1): error TS1008: Build:Unexpected token; 'module, class, interface, enum, import or statement' expected. Scripts\index.d.ts(8,13): error TS1005: Build:';' expected. в Visual Studio 2017 в приложении ASP.NET MVC
•
Error "unable to connect to web server "iis express" | ASP.NET MVC | Visual Studio 2017
•
Error "This site can't be reached" when run ASP.NET application | Solution: Recreate the Self-Signed HTTPS Certificate for localhost in IIS Express
WWW сайты для изучения ASP.NET MVC
•
Cайты для изучения ASP.NET MVC
Ваши вопросы присылайте по почте:
info@dir.by