Закрыть
×
=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
Праздники ...
Праздники ...
День города Минска (2-ая суббота сентября) (9 и 10 сентября 2023)
Концерты, выставки ...
Концерты, выставки ...
Вадим Самойлов "Агата Кристи"|||г. Минск 19 декабря 2026
Афишу
Спорт занятия ...
Спорт занятия ...
Круговой тренинг (круговые тренировки) в тренажерном зале для девушек, женщин
Спорт занятие
Компьютер, программы...
Компьютер, программы...
Объявления ...
Объявления ...
Отдам бесплатно черепаху красноухую.
Объявление
Новости ...
Новости ...
Форум ...
Форум ...
обсуждение...
Поиск
Концерты
Спорт
Форум
Компьютер
Компьютер, программы
→
ASP.NET MVC (Model-View-Controller website)
Передаем данные из контроллера в представление в ASP.NET MVC
посмотрели
15400
раз
обновлено: 3 October 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).
← Previous topic
Creating a new application ASP.NET MVC
Next topic →
What are Razor View and Operators in MVC ASP.NET
Your feedback ... Comments ...
Your Name
Your comment
(www links can only be added by a logged-in user)
+ Picture
•
What is MVC in ASP.NET ?
•
Creating a new application ASP.NET MVC
Controller
•
Pass the data from the controller to the view in the MVC ASP.NET. Using ViewBag, ViewData, TempData, Model (strongly typed view)
View
•
What are Razor View and Operators in MVC ASP.NET
•
Create a variable and display it in View in the MVC ASP.NET
•
@using inside View in the MVC ASP.NET
•
@foreach(var item in arr) {...} inside the View in the MVC ASP.NET
•
@DateTime.Now inside the View in the MVC ASP.NET
•
How to find the name of the controller inside the View in the MVC ASP.NET
•
Display [DateTime | Date only | Time only] in the desired format in the MVC ASP.NET
Views
•
Strongly-typed-view in MVC ASP.NET
...
•
Master View using @RenderBody() in the MVC ASP.NET
•
Master View using @RenderBody() and additional sections @RenderSection in the MVC ASP.NET
...
•
Partial View in the MVC ASP.NET. Embed a partial representation @Html.Partial("My1") and @{ Html.RenderPartial("My1");}
•
When you click submit inside the partial view, the controller method is called ajax. The controller method should return PartialView(model) | ASP.NET MVC
...
•
Strongly-typed partial view in the MVC ASP.NET
Create the ViewModels folder. This is a good programming style for transferring data from the Controller to the View
•
Create the ViewModels folder. Create your class in the ViewModels folder. This is a good programming style for transferring data from the Controller to the View. Web Application ASP.NET MVC
Attributes. Use the attributes in the ViewModels (to show the combo buttons in the view). Using attributes in the Controller (to improve methods)
•
Attribute [Display(Name = "... ")] is described in the C# class and used in @Html.LabelFor, @Html.DisplayNameFor in the MVC ASP.NET
•
The attribute [Required(ErrorMessage = "Please enter a name")] is described for a property in the C# class and requires the property to be populated if the ErrorMessage error in the MVC ASP.NET is not filled in the screen
•
The attribute [Remote("IsValidAuthor", "Home", ErrorMessage = "Enter correct author of book")] is described for a property in a C# class and checks that property for correctness on the server via the IsValidAuthor method in conroller Home, if the method returns false, then there will be an ErrorMessage error on the screen in the MVC ASP.NET
•
The [HiddenInput(DisplayValue=false)] attribute is described in the C# class and is used in @Html.HiddenFor in the MVC ASP.NET
Routing
Links and redirects in the view
•
@Html.ActionLink inside the View in the MVC ASP.NET
•
@Html.RouteLink inside the View in the MVC ASP.NET
•
@Url.Action inside the View in the MVC ASP.NET
•
@Url.RouteUrl inside the View in the MVC ASP.NET
•
@Url.Content inside the View in the MVC ASP.NET
Bootstrap in MVC
•
Add and include Bootstrap (css, js files) to ASP.NET MVC project
JQuery in MVC
•
Connecting JQuery to ASP.NET MVC project
•
Using JQuery, we get the contents of the View in the MVC ASP.NET. Example: $.get("/Home/Index", function (data) {...}) ...
MVC AjaxExtensions class (asynchronous data retrieval)
•
Plugging jQuery & AJAX into ASP.NET MVC project
•
Using Ajax.ActionLink, get the contents of the View and insert it into the div in the MVC ASP.NET
•
Ajax object (this is the AjaxExtensions class) in MVC ASP.NET
Database (Entity Framework) in MVC ASP.NET
•
Entity Framework in the ASP.NET MVC application. Using Code First (we write c# code, and the tables in the database are created by ourselves)
Authentication (login/register/logout)
•
What is authentication (login/register/logout) in the MVC ASP.NET?
•
Example: Authentication (login/register/logout) in MVC ASP.NET using FormsAuthentication.SetAuthCookie(model. Name, true);
Authorization (admin/user/...)
•
What is authorization (admin/user/...) in the MVC ASP.NET?
•
Example: Authorization (admin/user/...) in MVC ASP.NET using the RoleProvider role provider
Writing the appendix "Planning tasks" in the MVC ASP.NET
•
Creating an empty application "Planning tasks, tasks" | ASP.NET MVC | Visual Studio 2017
•
Adding Bootstrap & jQuery libraries to the application "Scheduling tasks" | ASP.NET MVC | Visual Studio 2017
•
Create a master view (main menu & button login using Bootstrap) in the application "Planning tasks" | ASP.NET MVC | Visual Studio 2017
•
Add the "Home" controller and the "Index" view (the main page in the application "Planning tasks, tasks" | ASP.NET MVC | Visual Studio 2017
•
Add the Entity Framework library and create a connection to the Database in the application "Planning tasks" | ASP.NET MVC | Visual Studio 2017
•
Authentication (login/register/logout) in the application "Scheduling tasks" | ASP.NET MVC | Visual Studio 2017
•
Add the class "Task" to save tasks, tasks to the database in the application "Planning tasks, tasks" | ASP.NET MVC | Visual Studio 2017
•
Adding nUnit in the application "Planning tasks, tasks" | ASP.NET MVC | Visual Studio 2017
Additional topics, questions
•
Why is MVC ASP.NET better ASP.NET Web Forms?
•
Choosing between ASP.NET Core and ASP.NET?
•
How to choose an Internet browser to run a .NET project in it
•
How do I find the local address and port of your ASP.NET MVC application?
•
Scriptsindex.d.ts(8,1): error TS1008: Build:Unexpected token; "module, class, interface, enum, import or statement" expected. Scriptsindex.d.ts(8,13): error TS1005: Build:";" expected. in Visual Studio 2017 in the ASP.NET MVC app
•
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 Sites to Learn ASP.NET MVC
•
Sites to learn ASP.NET MVC
Ваши вопросы присылайте по почте:
info@dir.by