现在的位置: 首页 > 综合 > 正文

自定义Web Control中捆绑JS文件

2013年12月07日 ⁄ 综合 ⁄ 共 1170字 ⁄ 字号 评论关闭

写WebControl的时候迟早要遇到js,毕竟不能再服务器端搞定一切.这时候再类库中引用js就是个问题.

比如我要做一个省市联动的下拉表单,如果选择省,生成市时要回传就幼稚了,我可以有好多选择:

1.js就是个独立的文件,相对路径固定,那么我可以直接拼接出文件位置,用<script src="/path/City.js" type="text/javascript"></script>调用.

2.就当js它是个字符串,直接在控件的Render里写<script >...</script>块.

3.稍专业点,在PreRender里

3.向AssemblyInfo.cs文件中添加如下行注意名称: 名称= 程序集名 + 目录名 +  文件名, yj.WebControl.ClientScriptResourceTest.script1.js 为名称)
[assembly: System.Web.UI.WebResource("yj.WebControl.ClientScriptResourceTest.script1.js", "application/x-javascript")]

[assembly: WebResource("ControlLib.City.js", "application/x-javascript")]
namespace ControlLib
{
    public class UserContactControl:WebControl,System.Web.UI.INamingContainer
    {
        protected override void OnPreRender(EventArgs e)
        {
            if (this.Page != null)
            {
                ClientScriptManager manager = this.Page.ClientScript;
              
                manager.RegisterClientScriptResource(typeof(UserContactControl), "ControlLib.City.js");
            }
            base.OnPreRender(e);
        }
     }
}

同时,City.js文件的属性里 "生成操作" 选项要选 "嵌入的资源".

问题又来了,js里面有中文.输出到页面时,编码是GB2312的,而.net默认的是utf-8的.

1.在vs2005中打开需要编码的js,如City.js
2.在vs2005的文件菜单中选择:[高级保存选项]
选择编码:Unicode (UTF-8带签名) - 代码页 65001

行尾:当前设置
点击确定以后再保存即可

抱歉!评论已关闭.