Я работаю над старым проектом aspx с Code Behind в VB, с UserControl, который используется на двух сайтах .aspx.
Внутри этого элемента управления в Code Behind есть функция с именем RegisterScript,которая создает функцию JS и, как вы уже догадались, регистрирует это.Затем эта функция вызывается при щелчке переключателей во всплывающем окне. Код приведен ниже.
Моя проблема в том, что на одном сайте функция работает правильно, кнопка нажимается, а текстовые поля отображаются / не отображаются.На другом сайте нажатие переключателей ничего не дает, и консоль браузера показывает, что SetSearchField, функция JS, не определена.
UserControl определен одинаково в обоих файлах .aspx, зарегистрируйтесь вверху,определяется в нижней части.Там буквально нет разницы в этом аспекте.Я не знаю, в чем ошибка.
Sub RegisterScript, который создает функцию:
Private Sub RegisterScript()
Dim csm As ClientScriptManager = Page.ClientScript
Dim cstype = Me.GetType()
Dim csname = "SetSearchField"
If Not csm.IsClientScriptBlockRegistered(cstype, csname) Then
Dim script As String = ""
script &= "<script type='text/javascript'>"
script &= "function SetSearchField(selTextBoxId) {"
script &= "var itTextbox;"
script &= "itTextbox = document.getElementById('" & Me.Panel_Amount.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringBelegNr.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringFirm.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringOtherAccount.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringUsage.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "var selElem = document.getElementById(selTextBoxId);"
script &= "selElem.style.display = 'block';"
script &= "selElem.focus();"
'script &= "if (selTextBoxId=='" & Me.TextBox_SearchStringAmountFrom.ClientID & "') {"
'script &= "document.getElementById('" & Me.TextBox_SearchStringAmountTo.ClientID & "').style.display = 'block';"
'script &= "}"
script &= "}"
script &= "</script>"
csm.RegisterClientScriptBlock(cstype, csname, script, False)
End If
End Sub
Page_Load, где RegisterScript вызывается и добавляется в RadioButtons:
If Not Me.IsPostBack Then
Me.RegisterScript()
Me.RadioButton_Amount.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.Panel_Amount.ClientID & "');")
Me.RadioButton_BelegNr.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringBelegNr.ClientID & "');")
Me.RadioButton_Firm.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringFirm.ClientID & "');")
Me.RadioButton_OtherAccount.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringOtherAccount.ClientID & "');")
Me.RadioButton_Usage.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringUsage.ClientID & "');")
Регистрация и определение UserControl на сайте aspx, где он работает:
<%@ Register Src="../UserControls/UCSearch.ascx" TagName="UCSearch" TagPrefix="uc4" %>
<uc4:UCSearch ID="UCSearch_Sent" runat="server" Title="Gesendete Auftträge suchen"
EnableSearchSuborders="true" EnableSearchBelegNr="true" EnableSearchPeriode="false" />
Регистрация и определение на сайте, где он не работает:
<%@ Register Src="../UserControls/UCSearch.ascx" TagName="UCSearch" TagPrefix="uc3" %>
Я тщательно искал, но не нашел ничего, что соответствовало бы моему случаю работы на одном сайте, но не работал на другом.