今天写了一个用户控件,用户控件中引用了一个JS文件.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<script language="javascript" type="text/javascript" src="JS/InputableDropDownList.js"></script>
<asp:TextBox ID="txtList" runat="server" Width="150px" onclick="GetDropDownList(this)" onkeyup="GetDropDownList(this)" datasource="" autocomplete="off" pagecount="18" value_to_input=""></asp:TextBox>
<input id="hf_value" type="hidden" runat="server" style="width:0px;"/>如果不使用Updatepanel,使用起来没有问题, 但是,如果把用户控件放到updatepanel中,无论updatepanel的updatemode,childrensastriggers如何设置, 只要页面回发了一次,再将焦点放到用户控件输入框中,就会出现异常,
异常表面上看上去是页面凌乱, 在GetDropDownList中,设置debugger,会发现出现"没有可用于当前位置的源代码"如果将用户控件中的JS引用,放到页面上(aspx页面)引用,将用户控件中的引用去掉,就不会报错!然后我又单独地将页面上的JS引用放到Updatepanel内,就会再次出现一样的错误!
为什么? 如何做才能找到源文件?附: 出错后,通过查看页面的源文件,发现JS引用的代码是存在的:
<div id="UpdatePanel1">
<div>
<br />
<script language="javascript" type="text/javascript" src="JS/InputableDropDownList.js"></script>
<input name="InputableDropDownList1$txtList" type="text" id="InputableDropDownList1_txtList" onclick="GetDropDownList(this)" onkeyup="GetDropDownList(this)" datasource="" autocomplete="off" pagecount="18" value_to_input="" style="width:150px;" />
<input name="InputableDropDownList1$hf_value" type="hidden" id="InputableDropDownList1_hf_value" style="width:0px;" />
<br /> <input type="submit" name="Button1" value="Button" id="Button1" />
<input name="TextBox1" type="text" id="TextBox1" />
</div>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<script language="javascript" type="text/javascript" src="JS/InputableDropDownList.js"></script>
<asp:TextBox ID="txtList" runat="server" Width="150px" onclick="GetDropDownList(this)" onkeyup="GetDropDownList(this)" datasource="" autocomplete="off" pagecount="18" value_to_input=""></asp:TextBox>
<input id="hf_value" type="hidden" runat="server" style="width:0px;"/>如果不使用Updatepanel,使用起来没有问题, 但是,如果把用户控件放到updatepanel中,无论updatepanel的updatemode,childrensastriggers如何设置, 只要页面回发了一次,再将焦点放到用户控件输入框中,就会出现异常,
异常表面上看上去是页面凌乱, 在GetDropDownList中,设置debugger,会发现出现"没有可用于当前位置的源代码"如果将用户控件中的JS引用,放到页面上(aspx页面)引用,将用户控件中的引用去掉,就不会报错!然后我又单独地将页面上的JS引用放到Updatepanel内,就会再次出现一样的错误!
为什么? 如何做才能找到源文件?附: 出错后,通过查看页面的源文件,发现JS引用的代码是存在的:
<div id="UpdatePanel1">
<div>
<br />
<script language="javascript" type="text/javascript" src="JS/InputableDropDownList.js"></script>
<input name="InputableDropDownList1$txtList" type="text" id="InputableDropDownList1_txtList" onclick="GetDropDownList(this)" onkeyup="GetDropDownList(this)" datasource="" autocomplete="off" pagecount="18" value_to_input="" style="width:150px;" />
<input name="InputableDropDownList1$hf_value" type="hidden" id="InputableDropDownList1_hf_value" style="width:0px;" />
<br /> <input type="submit" name="Button1" value="Button" id="Button1" />
<input name="TextBox1" type="text" id="TextBox1" />
</div>
解决方案 »
- .net项目登陆问题,请高手帮忙啊!!!
- 马上要用asp.net mvc 3 开发一个CMS。但是不知道mvc 3开发出来的性能如何,请指教。
- 登陆 returnURL 参数
- 微软社交网站整站源码!拥有自己的SNS网站!
- asp.net mvc 查询问题
- 如何在C#取showmodeless打开时窗口传递的参数?
- 请教,dataset的问题(概念性的问题)
- 用vs.net在ASP。NET中做一个ascx,通栏按钮工具栏,用那种方式?
- Response.Redirect在ie下正常在chrome 不正常
- 调用图片局部内容
- 关于IIS集成管线模式的问题,求高手···
- asp.net在 vs2008操作xml问题
一测试才发现这问题
在后台使用,可以在OnInit方法或者其他方法里ScriptManager.RegisterClientScriptInclude(Page, typeof(WebUserControl), "WebUserControl", ResolveUrl("JS/InputableDropDownList.js"));
用UpdatePanel的页面上一定有个ScriptManager对吧,看下MS对ScriptManager的介绍有这么一条:
Microsoft AJAX Library 的客户端脚本功能和要发送到浏览器的任何自定义脚本。
再要详细的看下MSDN,ScriptManager有多个方法用来在使用UpdatePanel的情况下向前端页面定义脚本。
我的用户控件里,使用了大量的javascript脚本。 不放在JS里的话,会直接显示在使用用户控件的页面上。造成页面很大! 项目内用的控件,不公开用。哈。。 所以不担心路径
ScriptManager.RegisterClientScriptInclude(Page, typeof(WebUserControl), "WebUserControl", ResolveUrl("JS/InputableDropDownList.js"));这个试过了吗?
在页面的ONinit事件里?还是用户控件的ONINIT事件里?