В моем веб-приложении 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
Просто для ясности: это не проблема обратной передачи, а только рендеринг сценария в первом экземпляре элемента управления на странице (будь то на самой странице или из пользовательского элемента управления).