使用javascript的ASP.Net:在Webform中使用多个控件实例
问题描述:
我有一个用户控件,我想在页面上多次使用它。所以我尝试了将控件的JS移动到文件并为其创建原型的方法,以便它在页面上顺利运行。但在运行解决方案时,它提供了以下错误: 遗漏的类型错误:CtrlNameCtrlName1是不是构造使用javascript的ASP.Net:在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>
答
进行变量初始化加载像这样(用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;
}
};
甚至,这将引发错误: 遗漏的类型错误:CtrlNameCtrlName1不是在HTMLDocument的构造 。 (jquery.min.js:2) at k(jquery.min.js:2)(在j(jquery.min.js:2) – user2561997