ASP.NET как вызвать клиентский скрипт из публичного статического метода - PullRequest
3 голосов
/ 14 января 2012

Я собираюсь использовать следующую функцию 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()'    

спасибо

1 Ответ

6 голосов
/ 14 января 2012

Нельзя использовать свойства экземпляра (ClientScript) или методы (GetType()) внутри статических методов (в основном, любого экземпляра).

Удалите статическое ключевое слово, и оно должно работать:

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().

...