两个问题。1. 我建了个test类,类里面写了个JS的alert方法:
public static void alert(Page page, string msg)
{
page.ClientScript.RegisterStartupScript(page.GetType(), "x", "alert('" + msg + "');", true);
}但是后台调用的时候,需要test.alert(this,"弹出");我想直接test.alert("弹出"); 还不想用response.write,怎么办?谢谢。
2. 我发现当后台连续两个page.ClientScript.RegisterStartupScript 的时候,如果这两句话的第二个参数key的值都一样的话,第二个就失效了。只有key的值不一样的时候,这两个脚本才会同时有用。我现在是定义了一个100以内的随机数,然后放在key的位置,然后一般不会冲突。不过好像治标不治本。有没有什么好的办法?谢谢
public static void alert(Page page, string msg)
{
page.ClientScript.RegisterStartupScript(page.GetType(), "x", "alert('" + msg + "');", true);
}但是后台调用的时候,需要test.alert(this,"弹出");我想直接test.alert("弹出"); 还不想用response.write,怎么办?谢谢。
2. 我发现当后台连续两个page.ClientScript.RegisterStartupScript 的时候,如果这两句话的第二个参数key的值都一样的话,第二个就失效了。只有key的值不一样的时候,这两个脚本才会同时有用。我现在是定义了一个100以内的随机数,然后放在key的位置,然后一般不会冲突。不过好像治标不治本。有没有什么好的办法?谢谢
解决方案 »
- .net上传大文件服务器设置问题……难题啊,纠结了我几个月
- 各位大佬,我百度了好久,哪里有单词发音的数据库啊?
- 一个html页面通过正则抓取文本的问题,在线等(急)
- 数据邦定格式问题
- 这段代码什么意思啊?
- RegisterStartupScript("","")传参数的问题,求助
- asp.net 2.0中如何利用AccessDataSource控件把数据库内容按条读到变量中?
- VS2003 请问如何让DataGrid保持点击“编辑”按钮前的宽度?
- 请教关于DataGrid参数设置?谢谢!在线等待中……
- ASP.net的VB.net和以往的VBScript详细区别在哪里?为什么现在的教材都是用C#来写ASP.net
- 【提问】阿非大哥有看到的话麻烦进来看下
- |zyciis| 如何来移除对像中的指定列可属性的内容,谢谢,有代码
这个类继承自 System.Web.UI.Page
然后在调用
publicstaticvoid alert(string msg)
{
page.ClientScript.RegisterStartupScript(this.GetType(),"x","alert('"+ msg+"');",true);
}
{
protected void ShowJsMessage(string strErr)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + strErr + "');</script>"); }
}
public partial class Query : PageBase //页面继承
//调用
this.alert("弹出")
写BasePage类,写
public static void alert(string msg)
{
ClientScript.RegisterStartupScript(thisType(), "x", "alert('" + msg + "');", true);
}
Page继承BasePage
不过这个类还是要继承System.Web.UI.Page
给你我目前项目里的提示 /// <summary>
/// JS提示方法
/// </summary>
/// <param name="strErr">报错内容</param>
/// <returns>void</returns>
protected void ShowJsMessageByClientId(string strErr, string clientId)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), clientId, "<script>alert('" + strErr + "');</script>"); } protected void ShowScriptManagerJsMessage(string strErr)
{
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('" + strErr + "')", true);
}
protected void ShowScriptManagerJsMessage(string message, string url)
{
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('" + message + "');location.href='" + url + "'", true);
} /// <summary>
/// JS提示方法
/// </summary>
/// <param name="strErr">报错内容</param>
/// <param name="strUrl">转向地址</param>
/// <returns>void</returns>
protected void ShowJsMessage(string strErr, string strUrl)
{
if (strUrl == "")
{
strUrl = Request.RawUrl;
}
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + strErr + "');window.location.href ='" + strUrl + "';</script>");
}
/// <summary>
/// JS提示方法
/// </summary>
/// <param name="strErr">报错内容</param>
/// <returns>void</returns>
protected void ShowErrCloseWindow(string strErr)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('" + strErr + "');window.close();</script>");
} #endregion
定义不同键值
可我在JS类中的键值不是写死的吗?莫非我每次调用JS的时候,都要再传个键值吗?
我刚试了,不行啊。连续两个还是只执行第一个。我按照你写的这样,我直接在后台这样写Page.ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('sdf');</script>", true);但是报JS错误了。。为什么呢?
2、这个问题看看这个方法的实现就知道了,实现如下: if (scriptBlocks[key] == null)
{
scriptBlocks.Add(key, script);意思是,当这个key不存在的时候add一个,如果存在则不做任何处理,这就是为什么只执行第一个,不执行第二个,因为第二个根本没有被注册到scriptBlocks里面去。