ASP.NET如何从公共静态方法调用客户端脚本



我将在公共静态方法中使用以下ClientScript函数(VS2010,C#),但它会给我一些错误(我想用它来重定向"_parent"目标的响应

                ClientScript.RegisterStartupScript(GetType(), "Load", "<script type='text/javascript'>window.parent.location.href = '" + a + "'; </script>");
Error   37  An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.ClientScript.get' 
Error   38  An object reference is required for the non-static field, method, or property 'object.GetType()'    

感谢

不能在静态方法(基本上是任何实例)中使用实例属性(ClientScript)或方法(GetType())。

删除static关键字,它应该可以工作:

public void SomeMethod()
{
     ClientScript.RegisterSomeScript("Load", 
        "<script>....</script>");
}

评论后编辑:

或者,如果您需要该方法在静态类中是静态的,则将Page对象作为参数传递:

public static class ScriptRegistar
{
    public static void RegisterSomeScript(Page page)
    {
         page.ClientScript.RegisterStartupScript("Load", 
        "<script>.........</script>");
    }
}

用法(在页面代码后台):

public void Page_Load(Object sender, EventArgs e)
{
     ScriptRegistar.RegisterSomeScript(this);
}

旁注:ClientScript.RegisterStartupScript有两个参数:脚本的键和脚本文本,因此不需要GetType()

最新更新