2017-02-10 11 views
0

У меня есть User Control, который я хочу использовать несколько раз на странице. Поэтому я попытался использовать JS Control в файле и создать для него прототип, чтобы он работал плавно на странице. Но при выполнении решения, он дает следующее сообщение об ошибке: Uncaught TypeError: CtrlNameCtrlName1 не конструкторASP.Net с javascript: использование нескольких экземпляров элемента управления в Webform

Я не мог найти, где я делаю ошибку. Любая помощь будет оценена.

Спасибо.

управления пользователя с разметкой:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="CtrlName.ascx.vb" Inherits="MultiInstanceControl.CtrlName" %> 
<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox> 
<br /> 
<asp:Panel ID="pnlSearch" runat="server" Style="background-color: yellow;width: 30px;height: 30px;"></asp:Panel> 
<br /> 
<input id="txtInput" type="text" /> 

<script type="text/javascript" src="CtrlNameJS.js"></script> 

<script type="text/javascript"> 

    function CtrlName<%=me.ClientID%>() { 
     this.pnlSearchClientID = <%=pnlSearch.ClientID%>; 
       this.txtSearchClientID = <%=txtSearch.ClientID%>; 
       this.txtInputControl = document.getElementById('txtInput'); 
       this.Category = <%=Category%>; 
    } 

    CtrlName<%=me.ClientID%> = CtrlName.prototype; 

</script> 

Вот содержание JS файла он использует:

function CtrlName() { 
} 

CtrlName.prototype = { 
    HidePanel: function() { 
     if (Category == '1') { 
      pnlSearchClientID.style.backGroundColor = 'Red'; 
     } 
     else { 
      pnlSearchClientID.style.backGroundColor = 'Blue'; 
     } 
    }, 
    GetSearchedText: function() { 
     alert($find(txtSearchClientID).get_value()); 
    }, 
    GetInputText: function() { 
     alert(txtInputControl.value); 
    } 
}; 

И наконец, страница, которая использует контроль над с несколькими экземплярами:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="default.aspx.vb" Inherits="MultiInstanceControl._default" %> 
<%@ Register Src="~/CtrlName.ascx" TagPrefix="uc1" TagName="CtrlName" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 1. First Instance <br /><br /> 
      <uc1:CtrlName ID="CtrlName1" IsMultipleFile="false" Category="1" runat="server" /> 
    <asp:Button runat="server" ID="btnTest1" Text="Get Value" OnClientClick="return btnTest_ClientClick('1');" /> 
     <br /><br /> 
<br /> 
     <br /><br /> <br /><br /> 
     2. Second Instance <br /><br /> 
      <uc1:CtrlName ID="CtrlName2" IsMultipleFile="false" Category="2" runat="server" /> 
    <asp:Button runat="server" ID="Button2" Text="Get Value" OnClientClick="return btnTest_ClientClick('2');" /> 

    </div> 

     <script type="text/javascript"> 

      var inst1 = new CtrlName<%=CtrlName1.ClientID %>(); 
      var inst2 = new CtrlName<%=CtrlName2.ClientID%>(); 

      function btnTest_ClientClick(strVal) { 
       if (strVal == '1') { 
        inst1.HidePanel(); 
        inst1.GetSearchedText(); 
        inst1.GetInputText(); 

       } 
       else { 
        inst2.HidePanel(); 
        inst2.GetSearchedText(); 
        inst2.GetInputText(); 
       } 
       return false; 
      } 


</script> 
    </form> 
</body> 
</html> 

ответ

0

Сделать инициализацию переменной после всех сценариев, загруженных как это (с JQuery):

$(document).ready(function()){ 
     var inst1 = new CtrlName<%=CtrlName1.ClientID %>(); 
     var inst2 = new CtrlName<%=CtrlName2.ClientID%>(); 

     function btnTest_ClientClick(strVal) { 
      if (strVal == '1') { 
       inst1.HidePanel(); 
       inst1.GetSearchedText(); 
       inst1.GetInputText(); 

      } 
      else { 
       inst2.HidePanel(); 
       inst2.GetSearchedText(); 
       inst2.GetInputText(); 
      } 
      return false; 
     } 
}; 
+0

даже это бросает ошибку: Uncaught TypeError: CtrlNameCtrlName1 не является конструктором в HTMLDocument. (default.aspx: 86) at j (jquery.min.js: 2) at k (jquery.min.js: 2) – user2561997

 Смежные вопросы

  • Нет связанных вопросов^_^