关于脚本注册的问题还没有解决,继续散分……

极客行天下 2006-09-29 02:40:42
http://community.csdn.net/Expert/topic/5054/5054943.xml?temp=.510647
拼字串的问题已经解决。
现在我的问题是(vs2005下实现的):
string str = "<script language=javascript>function openWin(){";
str += "window.open('hello.html','name','height=510,width=600,resizable=no,left=' + (screen.availWidth-600)/2 + ',top=' + (screen.availHeight-510)/2);}<";
str += "/";
str += "script>";
ClientScriptManager cs = Page.ClientScript;
if (!cs.IsClientScriptBlockRegistered("clientScript"))
{
cs.RegisterClientScriptBlock(this.GetType(), "clientScript", str);
}

Response.Write("<script>openWin</script>");
会有脚本错误:未找到openWin
这些代码是放在page_load事件下的,如果去掉Response.Write("<script>openWin</script>");在页面加载后执行脚本函数openWin是没有问题的,这说明脚本是成功注册了的。关键是Response.Wrtie这里的问题。
请帮忙看看有什么好的解决方案,谢谢!
...全文
160 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
LinDaXX 2006-11-10
  • 打赏
  • 举报
回复
学习

liuyjcel 2006-09-30
  • 打赏
  • 举报
回复
学习
shixin1198 2006-09-29
  • 打赏
  • 举报
回复
right!
c_dotnet 2006-09-29
  • 打赏
  • 举报
回复
Mark !
给你一个类
using System;
using System.Text;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// MessageBox 的摘要说明
/// </summary>
public class MessageBox
{
public MessageBox()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

/// <summary>
/// 显示消息提示对话框
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="msg">提示信息</param>
public static void Show(System.Web.UI.Page page, string msg)
{
page.RegisterStartupScript("message", "<script language='javascript' defer>alert('" + msg.ToString() + "');</script>");
}

/// <summary>
/// 控件点击消息确认提示框
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="msg">提示信息</param>
public static void ShowConfirm(System.Web.UI.WebControls.WebControl Control, string msg)
{
//Control.Attributes.Add("onClick","if (!window.confirm('"+msg+"')){return false;}");
Control.Attributes.Add("onclick", "return confirm('" + msg + "');");
}

/// <summary>
/// 显示消息提示对话框,并进行页面跳转
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="msg">提示信息</param>
/// <param name="url">跳转的目标URL</param>
public static void ShowAndRedirect(System.Web.UI.Page page, string msg, string url)
{
StringBuilder Builder = new StringBuilder();
Builder.Append("<script language='javascript' defer>");
Builder.AppendFormat("alert('{0}');", msg);
Builder.AppendFormat("top.location.href='{0}'", url);
Builder.Append("</script>");
page.RegisterStartupScript("message", Builder.ToString());
}

/// <summary>
/// 显示消息提示对话框,并关闭
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="msg">提示信息</param>
public static void ShowAndClose(System.Web.UI.Page page, string msg)
{
StringBuilder Builder = new StringBuilder();
Builder.Append("<script language='javascript' defer>");
Builder.AppendFormat("alert('{0}');", msg);
Builder.Append("window.close();");
Builder.Append("</script>");
page.RegisterStartupScript("message", Builder.ToString());
}

/// <summary>
/// 输出自定义脚本信息
/// </summary>
/// <param name="page">当前页面指针,一般为this</param>
/// <param name="script">输出脚本</param>
public static void ResponseScript(System.Web.UI.Page page, string script)
{
page.RegisterStartupScript("message", "<script language='javascript' defer>" + script + "</script>");
}
}
极客行天下 2006-09-29
  • 打赏
  • 举报
回复
知道了:
用 @ 引起来的优点在于换码序列“不”被处理,这样就可以轻松写出字符串,例如一个完全限定的文件名:
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"


极客行天下 2006-09-29
  • 打赏
  • 举报
回复
以前是。
点错了,以前一般都是给100分,反正分挺多的
shixin1198 2006-09-29
  • 打赏
  • 举报
回复
您是老师吗? 有问题给的分好少呀!
极客行天下 2006-09-29
  • 打赏
  • 举报
回复
@用在这里有什么含义呢?请指教

我试了你上面的方法还是会提示同样的错误。

我用RegisterStartupScript倒是解决了我的问题:
cs.RegisterStartupScript(this.GetType(),"starup","<script>openWin();</script>");

谢谢
shixin1198 2006-09-29
  • 打赏
  • 举报
回复
没这么复杂 你
cs.RegisterClientScriptBlock("Name","<script>openWin</script>");
注册进去不就行了吗
c_dotnet 2006-09-29
  • 打赏
  • 举报
回复
string str = @"<script language=javascript>function openWin(){";
str += @"window.open('hello.html','name','height=510,width=600,resizable=no,left=' + (screen.availWidth-600)/2 + ',top=' + (screen.availHeight-510)/2);}<";
str += @"/";
str += @"script>";
ClientScriptManager cs = Page.ClientScript;
if (!cs.IsClientScriptBlockRegistered("clientScript"))
{
cs.RegisterClientScriptBlock(this.GetType(), "clientScript", str);
}

Response.Write(@"<script language=javascript>openWin();</script>");


现在你试试,还有问题才怪呢.
嘿嘿,你要注意字符串的转义....我加了个@你能明白吧?
还有啊,你的脚本语言是javascript调用吗?那最好是按照格式写openWin();
极客行天下 2006-09-29
  • 打赏
  • 举报
回复
if(document.all)是什么意思?我试了不行,仍然提示脚本错误,openWin()未找到对象
「已注销」 2006-09-29
  • 打赏
  • 举报
回复
搞这么复杂

这样呢?

Response.Write("<script>if(document.all)openWin();</script>");
极客行天下 2006-09-29
  • 打赏
  • 举报
回复
看来分是送不出去了
shaipe 2006-09-29
  • 打赏
  • 举报
回复
这个东东不是很明白!
帮你顶一下了

http://www.lbsxp.com
coley 2006-09-29
  • 打赏
  • 举报
回复
Page.ClientScript.RegisterStartupScript(this.GetType(),"JS","<script>alert();</script>")

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧