标签: scriptmanager

RegisterStartupScript不适用于ScriptManager,Updatepanel.这是为什么?

protected void timer1_Tick(object sender, EventArgs e)
    {
        foreach (RepeaterItem item in rpChat.Items)
        {
            TextBox txt = item.FindControl("txtChatMessage") as TextBox;
            if (txt != null)
            {
                message[i] = txt.Text;
                i--;
            }
        }
        lblStatusChat.Text = "";
        RepeaterBind();
        string javaScript = "<script language=JavaScript>\n" + "alert('Button1_Click client-side');\n" + "</script>";

        Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript);
    }
Run Code Online (Sandbox Code Playgroud)

timer_click触发和更新面板.并且警报消息不会显示在timer_tick事件上

asp.net updatepanel scriptmanager

41
推荐指数
3
解决办法
8万
查看次数

无法在嵌入UpdatePanel的WebControl中获取ScriptManager.RegisterStartupScript

我有我认为应该是一个相当简单的问题,但对于我的生活,我看不出我的问题.问题与ScriptManager.RegisterStartupScript有关,这是我之前多次使用过的.

我的场景是我有一个插入页面的自定义Web控件.控件(以及一个或两个其他)嵌套在UpdatePanel中.它们被插入到PlaceHolder的页面上:

<asp:UpdatePanel ID="pnlAjax" runat="server">
  <ContentTemplate>
    <asp:PlaceHolder ID="placeholder" runat="server">
    </asp:PlaceHolder>
    ...

protected override void OnInit(EventArgs e){
  placeholder.Controls.Add(Factory.CreateControl());
  base.OnInit(e);
}
Run Code Online (Sandbox Code Playgroud)

这是页面上唯一的更新面板.

控件需要运行一些初始的javascript才能正常工作.控制电话:

ScriptManager.RegisterStartupScript(this, GetType(), 
                                    Guid.NewGuid().ToString(), script, true);
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

ScriptManager.RegisterStartupScript(Page, Page.GetType(), 
                                    Guid.NewGuid().ToString(), script, true);
Run Code Online (Sandbox Code Playgroud)

问题是脚本在首次显示页面时正确运行,但在部分回发后不会重新运行.我尝试过以下方法:

  1. 从CreateChildControls调用RegisterStartupScript
  2. 从OnLoad/OnPreRender调用RegisterStartupScript
  3. 对前两个参数使用不同的参数组合(在上面的例子中,Control是Page和Type是GetType(),但我尝试过使用控件本身等).
  4. 我尝试过使用持久性和新的ID(不是我认为这应该会产生重大影响).
  5. 我使用了一些断点,因此验证了正确调用了寄存器行.

我唯一没有尝试的是使用UpdatePanel本身作为控件和类型,因为我不相信控件应该知道更新面板(并且在任何情况下似乎都没有获得更新的好方法面板?).

任何人都可以看到我在上面做错了什么吗?

谢谢 :)


好吧,回答上面的查询 - 它看起来好像占位符以某种方式混淆了ScriptManager.RegisterStartupScript.

当我将控件拉出占位符并将其直接编码到页面上时,Register脚本正常工作(我也将控件本身用作参数).


ScriptManager.RegisterStartupScript(this, GetType(), Guid.NewGuid().ToString(), script, true);

任何人都可以解释为什么注入控件到PlaceHolder会阻止ScriptManager正确注册脚本?我猜这可能与动态控件的生命周期有关,但如果有一个正确的上述过程,我会欣赏(据我所知).

c# asp.net ajax updatepanel scriptmanager

33
推荐指数
3
解决办法
11万
查看次数

以编程方式将ScriptManager添加到页面?

我正在开发一个WebPart(它将在SharePoint环境中使用,虽然它不使用对象模型)我想要公开AJAX功能.由于环境的性质,直接向页面添加脚本管理器是不是一个选项,因此必须以编程方式添加.我试图将ScriptManager控件添加到我的webpart代码中的页面.

protected override void CreateChildControls()
{
    if (ScriptManager.GetCurrent(Page) == null)
    {
        ScriptManager sMgr = new ScriptManager();
        // Ensure the ScriptManager is the first control.
        Page.Form.Controls.AddAt(0, sMgr); 
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,执行此代码时,我收到以下错误消息:

"在DataBind,Init,Load,PreRender或Unload阶段,无法修改控件集合."

是否有另一种方法将ScriptManager从WebPart添加到页面中,或者我是否只需将ScriptManager添加到将使用WebPart的每个页面(或母版页)?

c# web-parts scriptmanager sharepoint-2007

28
推荐指数
4
解决办法
5万
查看次数

JQuery Mobile出错

下面,我收到此错误:

在此输入图像描述

我已将问题代码缩小到JQuery Mobile 1.0或更高版本以及Asp.NET ScriptManager.

我向Visual Studio 2012添加了一个新的Web窗体项目,并包含以下代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
    <link rel="stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />

    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>

</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" ScriptMode="Release" runat="server"></asp:ScriptManager>
    <div>

    </div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

代码背后没有代码页面.

  • 这就是它,但是当我运行项目时, 当包含ScriptManager和JQuery Mobile脚本时,我收到上述错误.
  • 删除JQuery Mobile或ScirptManager时不会发生错误.

半天想知道并试图找到解释,我遇到的一个特定网站建议将ScriptMode ="Release"添加到ScriptManager.

将ScriptMode ="Release"添加到ScriptManager后,我没有收到上述错误.

搜索MSDN,它定义了ScriptMode:获取或设置一个值,该值指定是否呈现客户端脚本库的调试版本或发行版本.

将ScriptMode添加到ScriptManager后没有抛出错误,但为什么?有人可以解释为什么添加ScriptMode会阻止错误出现,而且只是添加ScriptMode,意味着真正的解算器还是创可贴?

这里抛出错误: 在此输入图像描述

谢谢

下面我已经包含了渲染的HTML页面:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title><link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>

</head>
<body>
    <form method="post" …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net jquery scriptmanager jquery-mobile

26
推荐指数
1
解决办法
1851
查看次数

脚本管理器和工具包脚本管理器之间的区别

ScriptManager和之间有什么区别ToolkitScriptManager?我发现只有一个令人信服的理由:它ToolkitScriptManager可以提高页面性能.如果是这样,为什么使用ScriptManager

asp.net asp.net-ajax scriptmanager

21
推荐指数
1
解决办法
4万
查看次数

如何判断UpdatePanel回发中是否正在运行某个方法?

如何判断方法是否在AJAX回发的上下文中运行(即作为UpdatePanel(异步)回发的结果)?

根据egoldin Page.IsAsync是一个非常常见的混淆,与AJAX完全无关.

正确的方法是使用ScriptManager.GetCurrent(页面).IsInAsyncPostBack.

asp.net updatepanel asp.net-ajax scriptmanager

19
推荐指数
1
解决办法
3281
查看次数

ScriptManager.RegisterStartupScript代码不起作用 - 为什么?

我过去曾使用这样的代码在我的asp.net网页上成功弹出警报消息.现在它不起作用.我无法弄清楚为什么.

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, 
     "alert('This pops up')", true);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript asp.net scriptmanager

19
推荐指数
2
解决办法
13万
查看次数

17
推荐指数
1
解决办法
1万
查看次数

如何将Master Page的ScriptManager放入c#(.cs)文件后面的Child页面代码中

以下是我创建的网站环境:

  1. 我有一个母版页面.
  2. 我已经从中创建了一个子页面.
  3. 我已将Script Manager放在Master页面上.

现在我想访问Master页面的脚本管理器,在我的代码隐藏(C#)文件中动态创建用户控件.

如何访问放置在母版页上的脚本管理器到我的子页面.

c# asp.net master-pages scriptmanager

16
推荐指数
2
解决办法
3万
查看次数

asp.net ScriptManager PageMethods未定义

我想从JS调用静态服务器端方法,所以我决定在我的网站上使用ScriptManager控件.所以我有一个母版页,具有这样的结构:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="TopLevelMasterPage.Master.cs"
    Inherits="Likedrive.MasterPages.TopLevelMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://ogp.me/ns/fb#">

<head runat="server">
    <title></title>
        <script type="text/javascript">
            function getGiftFileUrl() {
                function OnSuccess(response) {
                    alert(response);
                }
                function OnError(error) {
                    alert(error);
                }

                PageMethods.GetGiftFileUrl("hero", 1024, 768, OnSuccess, OnError);
            }

            getGiftFileUrl();

        </script>
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManagerMain"
            runat="server"
            EnablePageMethods="true" 
            ScriptMode="Release" 
            LoadScriptsBeforeUI="true">
    </asp:ScriptManager>
    <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
    </asp:ContentPlaceHolder>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是当页面加载时,我有一个JS异常 - 未定义PageMethods.我认为该对象将被隐式创建,所以我可以在我的javascript中使用它.

javascript asp.net ajax scriptmanager

11
推荐指数
2
解决办法
6万
查看次数