如下在ajax.net环境下弹出一个对话框:/// <summary>
/// showMsg 在ajax.net环境下弹出一个对话框
/// 使用示例: new showMsg((Control)sender,"hello world!");
/// <param name="ctrl">相关控件</param>
/// <param name="msg">对话框上的文字</param>
/// </summary>
public static void ajaxShowMsg(Control ctrl,string msg)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
ctrl,
typeof(Control),
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}我想改成使用时只要输入 ajaxShowMsg(string msg)却怎么也弄不起来
/// showMsg 在ajax.net环境下弹出一个对话框
/// 使用示例: new showMsg((Control)sender,"hello world!");
/// <param name="ctrl">相关控件</param>
/// <param name="msg">对话框上的文字</param>
/// </summary>
public static void ajaxShowMsg(Control ctrl,string msg)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
ctrl,
typeof(Control),
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}我想改成使用时只要输入 ajaxShowMsg(string msg)却怎么也弄不起来
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
GetType(),
"",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}
/// <summary>
/// showMsg 在ajax.net环境下弹出一个对话框
/// 使用示例: new showMsg((Control)sender,"hello world!");
/// <param name="ctrl">相关控件 </param>
/// <param name="msg">对话框上的文字 </param>
/// </summary>
public static void ajaxShowMsg(Control ctrl,string msg)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
GetType(), "js",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",true);
} 这样不行吗?
/// <summary>
/// showMsg 在ajax.net环境下弹出一个对话框
/// 使用示例: new showMsg((Control)sender,"hello world!");
/// <param name="ctrl">相关控件 </param>
/// <param name="msg">对话框上的文字 </param>
/// </summary>
public static void ajaxShowMsg(string msg)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
GetType(), "js",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",true);
} 这样不行吗?
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0120: 非静态的字段、方法或属性“object.GetType()”要求对象引用源错误: 行 142:
行 143: System.Web.UI.ScriptManager.RegisterClientScriptBlock(
行 144: GetType(),
行 145: "",
行 146: DateTime.Now.ToString().Replace(":", ""),
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0120: 非静态的字段、方法或属性“object.GetType()”要求对象引用源错误: 行 143:
行 144: System.Web.UI.ScriptManager.RegisterClientScriptBlock(
行 145: GetType(), "js",
行 146: DateTime.Now.ToString().Replace(":", ""),
行 147: "alert('" + msg + "')",true);
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this.Page,
Page.GetType(),
"",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0026: 关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效源错误: 行 142:
行 143: System.Web.UI.ScriptManager.RegisterClientScriptBlock(
行 144: this.Page,
行 145: Page.GetType(),
行 146: DateTime.Now.ToString().Replace(":", ""),
想做成一个通用的 好像不行
既然想用javascript 就手写嘛 写个通用的 不也一样
手写的没办法在ajax环境下弹出对话框啊
{
static public void ajaxShowMsg(this System.Web.UI.Control ctrl, string msg) //对System.Web.UI.Control使用扩展方法给其新增一个ajaxShowMsg的方法
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(ctrl,ctrl.GetType(),DateTime.Now.ToString().Replace(":", ""), "alert('" + msg + "')",true);
}} 使用方法:
this.Label1.ajaxShowMsg("fasdfsadf");
public static void ajaxShowMsg(string msg)
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
GetType(),
"",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}
scriptManager.RegisterClientScriptBlock(Control c,Tpye t,string key,string script,bool);
/// <summary>
/// 弹出JavaScript小窗口
/// </summary>
/// <param name="js">窗口信息</param>
public static void Alert(string message, Page page)
{
#region
string js = @"<Script language='JavaScript'> alert('" + message + "');</Script>";
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
}
#endregion
}
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
GetType(), "js",
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",true);
}
{
System.Web.UI.ScriptManager.RegisterClientScriptBlock(
new Control(),
typeof(Control),
DateTime.Now.ToString().Replace(":", ""),
"alert('" + msg + "')",
true);
}
参数名: control
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: The control must be in the control tree of a page.
参数名: control源错误:
行 141: {
行 142:
行 143: System.Web.UI.ScriptManager.RegisterClientScriptBlock(
行 144: new Control(),
行 145: typeof(Control),
源文件: d:\hy\App_Code\MyHelper.cs 行: 143
如果页面都继承 System.Web.UI.Page,那么增加这个类就可以
public static class test
{
public static void ajaxShowMsg(this System.Web.UI.Page page, string info)
{
ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true);
}
}调用的地方直接写Page.ajaxShowMsg("测试");就ok了
感谢Mbh0210提供的方法,我在app_code\myHelper.cs文件里加入了你提供的方法public static void ajaxShowMsg(System.Web.UI.Page page, string info)
{
ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true);
}现在调用这个方法的写法变成了 MyHelper.ajaxShowMsg2(this, "123");
比我之前的MyHelper.ajaxShowMsg((Control)sender,"123");简化了许多,如果能达到下面这个就更好了
MyHelper.ajaxShowMsg("123");
如果没有ajaxShowMsg(参数1)就不能调用
一定要实现,就要重写调用ajaxShowMsg的函数
{
public static void ajaxShowMsg(this 这个好像多余了System.Web.UI.Page page, string info)
{
ScriptManager.RegisterClientScriptBlock(page,page.GetType(), DateTime.Now.ToString().Replace(":", ""), "alert('" + info + "')", true);
}
}
是对page类的扩张,ajaxShowMsg方法直接增加到page中,是类page的扩张方法
那么页面都是继承page类,你调用的时候直接可以Page.ajaxShowMsg("测试");就可以了,传入一个参数就ok了。
楼主看一下C#的扩展方法就知道我写的这个类是干嘛用的了。呵呵
{
public static void Alert(string msg)
{
string script = "<script>alert('{0}');</script>";
System.Web.UI.Page page = (System.Web.UI.Page)HttpContext.Current.Handler;
page.ClientScript.RegisterClientScriptBlock(page.GetType(),"",string.Format(script,msg.Replace("'","")));
}
}
调用: ScriptHelp.Alert("hello");不需依赖当前的page或者控件,自动获取,随时随地调用。
太好了,经测试上面的代码有效,调用非常方便,非常感谢lindping(framework 2.0,vs2005下测试通过)结贴送分喽