Chi sviluppa con ASP.NET avrà sicuramente a che fare con il ViewState, che rappresenta lo stato della pagina dopo la sua ultima elaborazione sul server ed è utilizzato per mantenere lo stato dei controls di una pagina.
Vi sarete anche accorti che nel caso i controlli siano molti il campo hidden __VIEWSTATE si allunga a dismisura, spostando in basso il codice HTML della pagina, cosa che ai motori di ricerca non piace più di tanto.
Con questo script, utlizzato anche da DotNetNuke, vedremo come spostare il tag input alla fine del form, creando una classe base che estende la System.Web.UI.Page.
Una volta creato l'assembly basterà ereditare la classe base nella pagina con la direttiva Inherits.
Public Class BasePage Inherits System.Web.UI.Page Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) Dim stringWriter As System.IO.StringWriter = New System.IO.StringWriter Dim htmlWriter As HtmlTextWriter = New HtmlTextWriter(stringWriter) MyBase.Render(htmlWriter) Dim html As String = stringWriter.ToString() Dim StartPoint As Integer = html.IndexOf("<input type=""hidden"" name=""__VIEWSTATE""") If StartPoint >= 0 Then Dim EndPoint As Integer = html.IndexOf("/>", StartPoint) + 2 Dim ViewStateInput As String = html.Substring(StartPoint, EndPoint - StartPoint) html = html.Remove(StartPoint, EndPoint - StartPoint) Dim FormEndStart As Integer = html.IndexOf("</form>") - 1 If FormEndStart >= 0 Then html = html.Insert(FormEndStart, ViewStateInput) End If End If writer.Write(html) End Sub End Class
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Scenari complessi di validazione con FluentValidation su ASP.NET Core
Diagnosticare i problemi di performance con MiniProfiler su ASP.NET Core MVC
Migliorare le performance di ASP.NET Core 2.2 su IIS
Implementare un blocco territoriale in ASP.NET Core
Compilare dinamicamente le view in ASP.NET Core 3.0
Migrare un'application ASP.NET Core 2.1 alla versione 2.2
Sicurezza nelle applicazioni ASP.NET Core
Supportare l'autenticazione basata su API Key in ASP.NET Core
Personalizzazioni avanzate del parsing della richiesta in ASP.NET Core
Creare librerie di View riutilizzabili con Razor Class Library in ASP.NET Core
Gestire la localizzazione con ASP.NET Core
Autorizzare una chiamata in base allo scope in ASP.NET Core
I più letti di oggi
- Introduzione ad Azure DevOps release management
- Utilizzare la funzionalità ref all'interno di un component React
- Chiamare direttamente un numero di telefono con HTML5
- DevOps in a .NET world
- What's new in Xamarin and Visual Studio for macos
- Building modern web apps with Blazor
- WPF and Windows Apps in .NET Core 3