В моето уеб приложение ASP.NET 4.0 имам клас, който е извлечен от стандартен ASP.NET <asp:TextBox>
. Този клас трябва да добави скрипт от страна на клиента, но скриптът трябва да се добави към страницата само веднъж, дори ако има множество екземпляри на контролата на страницата.
Тъй като нямам достъп до ViewState на страницата, каква е най-добрата практика да се уверя, че само първата контрола изобразява скрипта на страницата.
Не мога да използвам статична променлива, тъй като очевидно трябва да е на страница... не на сесия/приложение.
Това е приблизително това, което имам в момента...
Public Class MyTextBox
Inherits TextBox
Private Sub MyTextBox_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender
Dim script As String = "window.alert('Hello World');"
Page.ClientScript.RegisterStartupScript(Me.GetType(), "myscript", script, True)
End Sub
End Class
Само за да бъде ясно – това не е проблем след връщане, а само изобразяване на скрипта при първото копие на контролата в рамките на страницата (независимо дали в самата страница или от потребителска контрола).