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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WebPages.Core" Version="1.0.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WebPages.Core" Version="1.0.0.3" />
                    
Directory.Packages.props
<PackageReference Include="WebPages.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WebPages.Core --version 1.0.0.3
                    
#r "nuget: WebPages.Core, 1.0.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WebPages.Core@1.0.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WebPages.Core&version=1.0.0.3
                    
Install as a Cake Addin
#tool nuget:?package=WebPages.Core&version=1.0.0.3
                    
Install as a Cake Tool

.NET

Вы можете добавлять пользовательские классы страниц аля 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
1.0.0.3 198 9/21/2025
1.0.0.2 219 9/19/2025
1.0.0.1 503 9/17/2025