如何在类文件中使用ScriptManager?

3

我有一个常用的方法,使用page.clientScript来显示警告消息。但是后来我添加了update panel。现在这段代码不起作用了。所以我需要调用scriptmanager,但我得到一些错误消息,说它不可访问。 下面是我在common.cs文件中的ShowMessage方法:

 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);
        }

那么我该如何在更新面板下使用这个方法?


1
尝试包含所需的命名空间,您可以使用我的答案中的方法,因为没有其他方法可以做到这一点。 - Pranay Rana
5个回答

4

无法在类文件中使用此方法...另一个选项是在我的代码的每个地方都使用所述方法。 - user240141
2
这对我有效... 你在智能感知中找不到 System.Web.UI.ScriptManager 类吗?你的项目引用了 System.Web.Extensions 吗? - Brian Mains

3
使用于类文件:
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
const string scriptString = "<script type='text/javascript'> alert('message');</script>";
                ClientScriptManager script = Page.ClientScript;
                script.RegisterClientScriptBlock(GetType(), "randomName", scriptString);

2

在.cs文件中尝试以下操作:

var page = HttpContext.Current.CurrentHandler as Page;

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

对我来说它正在工作 ^^


1

这是我是如何做到的:

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!");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接