ASP.NET后台输出js脚本代码
利用asp.net输出js我们大多数都会直接使用Respone.Write()然后根js格式的代码,再在页面调用时我们直接这样是完全可以实现的,下面我来给大家介绍另一种方法
我是我最初的想法以下是代码片段:
Respone.Write(“hello word!”);
但是,当你查看客户端源码时,你会发现,输出的内容呈现在源码的最前端,显然它破坏了HTML的格式,在某些情况下这是会影响到页面布局等效果的。正确的输出方式应该是:
this.ClientScript.RegisterStartupScript this.ClientScript.RegisterClientScriptBlock.
this.ClientScript.RegisterStartupScript是在Form开始的第一行注册脚本,后者则是在Form结尾处注册脚本。这样就不会破坏HTML得格式了,如:
this.ClientScript.RegisterStartupScript(this.GetType(), "scriptKey", "") this.ClientScript.RegisterStartupScript(this.GetType(), "scriptKey", "alert('hello word!');",True)
this.ClientScript.RegisterClientScriptBlock也类似UpdatePanel
当你想在UpdatePanel内输出一段JS时,运用以上方法就会得不到预期的效果。那么请看一下示例。
有一个UpdatePanel的ID是upPn
ScriptManager.RegisterClientScriptBlock(upPn,this.GetType(), "scriptKey", "alert('hello word!');",True) ScriptManager.RegisterStartupScript(upPn,this.GetType(), "scriptKey", "alert('hello word!');",True)
这样的话,当UpdatePanel内容加载到客户端后,就会弹出“hello word!”对话框。
这样的话,从后台输出JS就更加方便了
还有一种办法,就是像生成xml一样直接生成js文件了,这样直接调用js文件,就可以了,实例
protected override void Render(HtmlTextWriter writer) { int titleid =0; StringWriter html = new StringWriter(); System.Web.UI.HtmlTextWriter tw = new System.Web.UI.HtmlTextWriter(html); base.Render(tw); StreamWriter sw; string dir = Server.MapPath("~/js/ask/"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } string path = dir + "ask"+"_" + titleid + ".js"; sw = new StreamWriter(path, false, System.Text.Encoding.UTF8); string newhtml = html.ToString().Replace(""", "").Replace("rn", ""); string lasthtml = "document.write("" + newhtml + "")"; sw.Write(lasthtml.ToString()); sw.Close(); tw.Close(); }
JS文件调用乱码解决方法
1、 问题:后台字体倒显示?效果如下:
原因:由于Asp.net采用UTF-8编码,原先使用GB2312导致乱码。
解决方法:在Web.config中添加 以下代码段
<system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="zh-CN" culture="zh-CN" fileEncoding="utf-8" /> </system.web>
在解决完后台乱码问题,接着出现前台乱码问题,详情问题2
2、 问题:在添加完以上节点后,系统前台页面出现以下乱码问题:
原因:由于添加了 fileEncoding="utf-8"该项目,造成导航无法显示
解决方法:删除该选项
3、 问题:由系统后台生成的JS文件,在前台的*.aspx的页面中调用时乱码,效果如下:
原因:JS采用的是GB2312编码,而*.aspx采用的UTF-8编码方式,解决思路,统一编码方式
解决方法:第一步:根据问题1解决方法操作,注:不要加 fileEncoding="utf-8"
第二步:在需要调用到JS的aspx页中加入 <meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
第三步:在页面加载事件中加入下句
protected void Page_Load(object sender, EventArgs e) { Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); }
Q Q: 121866673
来源: http://zxlovenet.cnblogs.com
声明: 本文原创发表于博客园,作者为初行本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
消息:此博客已停止更新,想了解最新博客更新请关注我的新博客 Noogel's notes
推荐: 推荐使用为知笔记(WizNote),它是电脑、手机、平板上都能用的云笔记软件,还可以分类管理和共享资料,使用我的邀请码注册:https://note.wiz.cn/i/06102d9e
打赏: 如果您觉得文章对您的工作有帮助,请小额打赏我一些,鼓励我写出更好的文章!

微信打赏

支付宝打赏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述