PHP and ASP.NET integration
Use native HTML as server-rendered views with your own controllers and data.
Choose the HTML edition
The HTML package does not need a Node production process. Preview it unchanged first, then migrate one page at a time into your application.
Extract a common layout
- Place assets and images in your backend’s public/static directory.
- Extract the head, navigation, header and footer into layout partials.
- Keep one main element for each page’s content.
- Retain script order and appearance attributes.
- Replace demo links and active-menu checks with your application routes.
- Disable or replace demo renderers for server-owned pages so they do not overwrite your content.
PHP pattern
Example structure to adapt; these PHP files are not shipped as an application:
public/
assets/
customers.php
views/partials/
head.php
sidebar.php
footer.php<?php require __DIR__ . '/../views/partials/head.php'; ?>
<?php require __DIR__ . '/../views/partials/sidebar.php'; ?>
<main id="main-content" class="pro-main">
<h1><?= htmlspecialchars($pageTitle, ENT_QUOTES, 'UTF-8') ?></h1>
<!-- Render authorized records from your controller. -->
</main>
<?php require __DIR__ . '/../views/partials/footer.php'; ?>Retain the surrounding shell containers from starter.html. Define pageTitle in your controller. Escape dynamic values, use parameterized database access and protect state-changing forms with your application’s CSRF mechanism.
ASP.NET Razor pattern
Copy static assets to wwwroot/assets. Build Shared/_Layout.cshtml from starter.html and place RenderBody inside its existing main container:
<main id="main-content" class="pro-main">
@RenderBody()
</main>
@await RenderSectionAsync("Scripts", required: false)Use the URL helpers from your ASP.NET application for assets and route links, particularly beneath a path base. Let Razor encode dynamic values. Keep static-file serving enabled in your existing server configuration. This is a layout integration pattern, not a generated ASP.NET project.
Validate the integration
- Open a nested page directly and refresh.
- Check asset paths and active navigation.
- Test authorization and server validation.
- Check failed saves preserve form input.
- Verify all selected appearance modes after extracting partials.