WebPages.Core
1.0.0.3
dotnet add package WebPages.Core --version 1.0.0.3
NuGet\Install-Package WebPages.Core -Version 1.0.0.3
<PackageReference Include="WebPages.Core" Version="1.0.0.3" />
<PackageVersion Include="WebPages.Core" Version="1.0.0.3" />
<PackageReference Include="WebPages.Core" />
paket add WebPages.Core --version 1.0.0.3
#r "nuget: WebPages.Core, 1.0.0.3"
#:package WebPages.Core@1.0.0.3
#addin nuget:?package=WebPages.Core&version=1.0.0.3
#tool nuget:?package=WebPages.Core&version=1.0.0.3
Вы можете добавлять пользовательские классы страниц аля CodeBehind таким образом:
Public Class IndexPage
Inherits Page
End Class
Каждое имя класса связывается с файлом шаблона с расширением htm. Файл шаблона может содержать уникальные имена заполнителей внутри скобок {{ }}. Они могут быть связаны с серверными элементами управления или пользовательскими данными.
Например, шаблон может выглядеть следующим образом:
<!DOCTYPE html>
<html lang="ru-RU">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<link type="text/css" rel="stylesheet" href="/lib/bootstrap/bootstrap.css" />
</head>
<body>
{{ __formBegin }}
{{ __formState }}
<section class="container">
<div class="row">
<div class="col-12 bg-dark text-white">
<h1 class="h4 py-3 px-5">{{ H1 }}</h1>
</div>
</div>
</section>
<section class="container">
<div class="row mt-3">
<div class="col-md-6">
{{ formTxt1 }}
</div>
</div>
</section>
{{ __formEnd }}
</body>
</html>
Обязательные заполнители __formBegin и __formEnd переписываются в форму, добавляются скрипты для PostBack запросов, скрытые поля для хранения объекта порождающий события, а также скрытое поле для объекта состояния.
Объект состояния сериализуется в JSON, далее упаковывается и шифруется. По-умолчанию в него записываются все свойства элементов управления, которые изменились после их инициализации.
Заполнитель {{ formTxt1 }} должен быть связан с текстовым полем. Для этого в классе страницы требуется зарегистрировать элемент управления. Перепишем класс таким образом:
Imports WebPages
Imports WebPages.Controls
Public Class IndexPage
Inherits Page
Private WithEvents formTxt1 As New TextBox(Me, nameOf(formTxt1))
Private Sub IndexPage_Load(FirstRun As Boolean) Handles Me.Load
If FirstRun Then
formTxt1.CSS = "form-control"
formTxt1.Text = "Ваш текст здесь ..."
ViewData("H1") = "Напишите в текстовом поле что-нибудь"
End If
End Sub
Private Sub formTxt1_TextChanged(sender As HtmlControl, e As HtmlControlEventArgs) Handles formTxt1.TextChanged
ViewData("H1") = txt1.Text & " " & Now.ToString()
End Sub
End Class
Сначала мы создаём экземпляр класса для текстового поля и передаём ссылку на объект контейнера (текущая страница) и идентификатор элемента управления. Он может обрабатывать события, например, при изменении текста в текстовом поле создадим строку с пользовательским текстом и текущей датой и запишем внутри страницы. Запишем это значение в словарь ViewData с ключом "H1". Вы уже наверное поняли, что заполнитель в странице {{ H1 }} будет заменён на это значение.
Можете запустить проект и поменять текст в поле. Каждое изменение будет создавать PostBack события. Эти события преобразуются в события элемента управления, которое мы можем перехватить и обработать. Пользователю вернётся страница и отрисованный элемент управления в котором будет пользовательский текст. Если будут несколько элементов управления на форме и они будут перехватывать события, то текст в нашем поле не будет изменён, т.к. его значение сохранится в объекте состояния. Объект состояния передаётся между событиями PostBack практически также, как в классическом WebForms в ASP.NET.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.