从.ascx文件调用Javascript函数时出错

时间:2012-07-17 15:56:19

标签: javascript asp.net

我将VS 2003应用迁移到了VS 2010。 该应用程序有side_menu.ascx,在default.aspx中引用。 在side_menu.ascx中,调用了一个javascript函数 menu ,该函数存在于side_menu.js中。

但是,当调用函数菜单时,它会在运行时发出错误 - '无法找到功能菜单'这在VS 2003中正常工作

这是我收到此错误的地方 - 此代码位于side_menu.ascx

 new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES)

这是default.aspx中的代码

                    <!-- Side Menu -->
     <td valign="top" class="page_side_menu">
        <mycontrols:sidemenu id="SideMenu1" runat="server"/>
        </td>

这是side_menu.ascx

中的代码
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="side_menu.ascx.vb" Inherits="TOrders.UI.Controls.SideMenu" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<table cellPadding="0" width="100%">
<tr>
    <td vAlign="top" align="left" width="100%">
        <table cellSpacing="10" cellPadding="0" width="100%">
            <tr>
                <td align="left">
                    <asp:Literal ID="litError" Runat="server" Text="<font color=#E0E0E0 size=1>*&nbsp;</font>" Visible="False"></asp:Literal><asp:label id="lblJump" runat="server" ForeColor="#E0E0E0" Font-Size="XX-Small">Jump to Telex/Order:</asp:label>
                    <br>
                    <asp:textbox id="txtJumpTo" runat="server" Width="125px" CssClass="textbox"></asp:textbox>&nbsp;<input type="button" value="Go" runat="server" id="btnGo" class="TabOut-Button">
                </td>
            </tr>
        </table>
    </td>
</tr>
</table>
<script language="JavaScript" src="~/library/scripts/side_menu.js"     type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_items.js" type="text/javascript"></script>
<script language="JavaScript" src="~/library/scripts/side_menu_tpl.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
<!--
new menu (SIDE_MENU_ITEMS, SIDE_MENU_POS, SIDE_MENU_STYLES);
// -->
</script>

这是javascript函数side_menu.js

var menus = [];

function menu (item_struct, pos, styles) {
// browser check
this.item_struct = item_struct;
this.pos = pos;
this.styles = styles;
this.id = menus.length;
this.items = [];
this.children = [];

this.add_item = menu_add_item;
this.hide = menu_hide;

this.onclick = menu_onclick;
this.onmouseout = menu_onmouseout;
this.onmouseover = menu_onmouseover;
this.onmousedown = menu_onmousedown;

var i;
for (i = 0; i < this.item_struct.length; i++)
    new menu_item(i, this, this);
for (i = 0; i < this.children.length; i++)
    this.children[i].visibility(true);
menus[this.id] = this;
}

4 个答案:

答案 0 :(得分:0)

尝试从javascript src路径中删除波浪号(〜)并确保路径实际上是正确的

答案 1 :(得分:0)

对我来说它是一样的,因此解决方案是: 改变相对路径并让它们取走根〜/

<强>前

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="~/css/content.css" rel="stylesheet" type="text/css" />
<link href="~/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="~/js/siscli.js" type="text/javascript"></script>
<script src="~/js/json2.js" type="text/javascript"></script>
<script src="~/js/date.js" type="text/javascript"></script>

<强>后

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="wucDTmisc1.ascx.vb"      Inherits="wucDTmisc1" %>
<%@ Register Src="wucBeneficiarios.ascx" TagName="wucBeneficiarios" TagPrefix="uc1" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<%@ Register Src="Controles/wucMoneda.ascx" TagName="wucMoneda" TagPrefix="uc1" %>
<link href="/css/content.css" rel="stylesheet" type="text/css" />
<link href="/css/Blue.css" rel="stylesheet" type="text/css" />
<script src="/js/siscli.js" type="text/javascript"></script>
<script src="/js/json2.js" type="text/javascript"></script>
<script src="/js/date.js" type="text/javascript"></script>

同时在寻找解决方案时,我意识到在控件中最好留下JS代码。

它对我有用,我也希望你。

答案 2 :(得分:0)

您需要的可能是解释here的内容。你必须将“〜”替换为跟随用户控件的东西,而不是他在应用程序中的phisicaly登陆位置。

<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/JS/VerticalMenu.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_items.js")%>"></script>
<script language="javascript" type="text/javascript" src="<%=Page.ResolveUrl("~/library/scripts/side_menu_tpl.js")%>"></script>

答案 3 :(得分:0)

<强>分辨

我终于找到了问题的解决方案。它是使用脚本标记

我把它重写为

<script src="../library/scripts/side_menu.js" type="text/javascript" />

而不是

<script src="../library/scripts/side_menu.js" type="text/javascript"></script>