Закрыть
×
=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 = "flex"; // !!!!! 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
Праздники ...
Праздники ...
Международный день защиты детей (1 июня)
Концерты, выставки ...
Концерты, выставки ...
Выставка-ярмарка "В мире самоцветов"|||г. Минск с 3 февраля по 14 июня 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Занятия в тренажерном зале
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Детская танцевальная студия
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
ASP.NET MVC (web сайт на архитектуре Model-View-Controller)
Передаем данные из контроллера в представление в ASP.NET MVC
посмотрели
14441
раз
обновлено: 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