Как использовать ScriptManager в файле класса? - PullRequest
3 голосов
/ 05 августа 2011

У меня есть общий метод, который отображает предупреждение с использованием page.clientScript.Но позже я добавил панель обновления.Теперь этот кусок кода не работает.Поэтому мне нужно вызвать там скриптменеджер, но я получаю сообщение об ошибке, что оно там доступно.Ниже приведен мой метод ShowMessage для файла common.cs

 private static void ShowMessage(Page currentPage, string message)
        {
            var sb = new StringBuilder();
            sb.Append("alert('");
            sb.Append(message);
            sb.Append("');");
            currentPage.ClientScript.RegisterClientScriptBlock(typeof(Common), "showalert", sb.ToString(), true);
        }

Итак, как мне использовать этот метод на панели обновления

Ответы [ 5 ]

4 голосов
/ 05 августа 2011

Используйте: ScriptManager.RegisterClientScriptBlock Метод

ScriptManager.RegisterClientScriptBlock(
            this,
            typeof(Page),
            "TScript",
            script,
            true);
3 голосов
/ 21 марта 2012

Для использования в файле класса:

public static void SendAlert(string sMessage)
{
    sMessage = "alert('" + sMessage.Replace("'", @"\'").Replace("\n", @"\n") + "');";

    if (HttpContext.Current.CurrentHandler is Page)
    {
        Page p = (Page)HttpContext.Current.CurrentHandler;

        if (ScriptManager.GetCurrent(p) != null)
        {
            ScriptManager.RegisterStartupScript(p, typeof(Page), "Message", sMessage, true);
        }
        else
        {
            p.ClientScript.RegisterStartupScript(typeof(Page), "Message", sMessage, true);
        }
    }
}

Это может быть расширено, чтобы включить другие возможные обработчики, но на данный момент я так решил проблему.

3 голосов
/ 05 августа 2011
const string scriptString = "<script type='text/javascript'> alert('message');</script>";
                ClientScriptManager script = Page.ClientScript;
                script.RegisterClientScriptBlock(GetType(), "randomName", scriptString);
2 голосов
/ 11 марта 2016

Попробуйте это в файле .cs

var page = HttpContext.Current.CurrentHandler as Page;

ScriptManager.RegisterStartupScript(page, page.GetType(), "alert", "alert('Success');window.location ='Home.aspx';", true);

Это работает для меня ^^

1 голос
/ 25 ноября 2011

Вот как я это сделал:

public partial class JQuery
{

    private Page page;      
    public JQuery(Page pagina) {
        page = pagina;
    }

    public void Alert(string Title, string Message)
    {

        Message = Message.Replace("\n", "<br>");

        string command = String.Format("myCustomDialog('{0}','{1}')", Title, Message);
        ScriptManager.RegisterClientScriptBlock(page, this.GetType(), "", command, true);
    }

}

Тогда вы можете использовать так:

JQuery jquery = new JQuery(this.Page);
jQuery.Alert("Title", "Look, a jQuery dialog!");
...