this.Page.ClientScript.RegisterClientScriptBlock()
和this.Page.ClientScript.RegisterStartupScript()的区别
aspx页面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegsterClientJs.aspx.cs" Inherits="Ajax.Study.RegsterClientJs" %>
<!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" >
<head runat="server">
<title>Register Client Script</title>
<script type="text/javascript">
function Test(nodeId) {
document.getElementById(nodeId).style.display = "none";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="tbName" runat="server" Text="name"></asp:TextBox>
<asp:TextBox ID="tbAge" runat="server" Text="age"></asp:TextBox>
<asp:Button ID="BtnTest" runat="server" Text="RegisterStartupScript 隐藏age输入框" onclick="BtnTest_Click" />
<asp:Button ID="BtnTest2" runat="server"
Text="RegisterClientScriptBlock 隐藏age输入框" onclick="BtnTest2_Click" />
</div>
</form>
</body>
</html>
后台代码:
protected void Page_Load(object sender, EventArgs
e)
{
}
/// <summary>
/// 使用RegisterStartupScript注册js脚本
/// </summary>
/// <param
name="sender"></param>
/// <param
name="e"></param>
protected
void BtnTest_Click(object sender, EventArgs e)
{
//注册到 <form> 尾部 ,HTML元素已加载完毕
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "age1", "Test('"
+ tbAge.ClientID + "');", true);
}
/// <summary>
///
使用RegisterClientScriptBlock注册js脚本
/// </summary>
/// <param
name="sender"></param>
/// <param
name="e"></param>
protected
void BtnTest2_Click(object sender, EventArgs e)
{
//注册到<form> 头部 ,此时HTML还未加载!
//js会报 缺少对象
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "age2", "Test('"
+ tbAge.ClientID + "');", true);
}
运行程序后,查看源文件就会看到他们的巨大差别!这里我就懒得贴图了!见谅。
另:如果你是用了ajax的UpdatePanel控件在试一试上面的代码呢?(把上面的div内容放在UpdatePanel里面)
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<asp:TextBox ID="tbName" runat="server" Text="name"></asp:TextBox>
<asp:TextBox ID="tbAge" runat="server" Text="age"></asp:TextBox>
<asp:Button ID="BtnTest" runat="server" Text="RegisterStartupScript 隐藏age输入框" onclick="BtnTest_Click" />
<asp:Button ID="BtnTest2" runat="server"
Text="RegisterClientScriptBlock 隐藏age输入框" onclick="BtnTest2_Click" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
后台代码:
/// <summary>
/// 使用RegisterStartupScript注册js脚本
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnTest_Click(object sender, EventArgs e)
{
//注册到 <form> 尾部 ,HTML元素已加载完毕
//this.Page.ClientScript.RegisterStartupScript(this.GetType(), "age1", "Test('" + tbAge.ClientID + "');", true);
//UpdatePanel 是用ajax后用上面的没有效果
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "age1", "Test('" + tbAge.ClientID + "');", true);
}
/// <summary>
/// 使用RegisterClientScriptBlock注册js脚本
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnTest2_Click(object sender, EventArgs e)
{
//注册到<form> 头部 ,此时HTML还未加载!
//js会报 缺少对象
//this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "age2", "Test('" + tbAge.ClientID + "');", true);
//使用ajax的UpdatePanel 后
//页面上的this.UpdatePanel1控件ID
ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1, typeof(Page), "key1", "Test('" + tbAge.ClientID + "');", true);
}
效果实现了撒,而且没有刷新!好像使用了UpdatePanel1后RegisterClientScriptBlock也没有报错了!当然这个示例只是为了我学习RegisterStartupScript和RegisterClientScriptBlock的区别!
以上功能可以直接用客服端js就实现了没有必要再后台处理!
分享到:
相关推荐
在.NET开发中,有时我们需要在后台代码中向前端用户显示一些提示信息,比如确认操作、错误消息或成功通知。这通常通过注入JavaScript代码到HTML响应中实现,因为浏览器端的JavaScript可以直接与用户交互。以下是一些...
// 最后,讲一下RegisterStartupScript和RegisterClientScriptBlock的差别: // Page.ClientScript.RegisterStartupScript(Page.GetType(),"alert1", "alert('test')",true); //在生成页面的后半部分!! //...
ASP.NET 后台弹出提示方法 在 ASP.NET 开发中,弹出提示信息是非常常见的需求,例如,在用户提交表单时,提示用户操作成功或失败。在这篇文章中,我们将讨论 ASP.NET 后台弹出提示方法的多种实现方式。 1. 使用 ...
在ASP.NET开发中,为了提升用户体验和页面响应速度,异步调用后台方法是一种常见的技术手段。本文将详细介绍如何在ASP.NET中实现异步调用后台方法,并解释相关的代码实现细节。 #### 一、异步调用背景与优势 异步...
本文将详细介绍如何在ASP.NET的C#代码中调用JavaScript脚本,以及如何有效地利用这些技术来增强用户界面的交互性和响应性。 ### 一、ASP.NET与JavaScript交互的重要性 在现代Web开发中,客户端脚本(如JavaScript...
不过,随着技术的发展,现代Web开发中更多地倾向于使用库和框架(如jQuery、React、Vue等),它们提供了更高级别的抽象和封装,但掌握JavaScript基础和如何在ASP.NET中有效利用JavaScript仍然是每个Web开发者必备的...
ASP.NET提供了`ScriptManager.RegisterStartupScript`或`ScriptManager.RegisterClientScriptBlock`等方法,可以在页面渲染时动态注册脚本,确保脚本在正确的时间点执行。 #### 4. 避免直接使用`document....
后台注册脚本是ASP.NET提供的一种功能,它允许开发者在服务器端创建和添加JavaScript代码,然后这些代码会在页面响应发送到客户端时自动插入到HTML中适当的位置。这样,当页面在浏览器中加载时,这些JavaScript脚本...
为了解决这个问题,我们可以使用`ClientIDMode`属性来保持服务器控件的ID不变,或者使用`RegisterStartupScript`或`RegisterClientScriptBlock`方法在服务器端生成JavaScript代码,以便在客户端执行时能正确引用控件...
因此,尽管在C#代码中先调用了`Page.RegisterStartupScript`,但实际执行时会先执行通过`ScriptManager.RegisterClientScriptBlock`注册的脚本。这是因为`<head>`标签中的内容会先于`<body>`标签中的内容被解析和...
在ASP.NET 2.0之前,需要使用RegisterStartupScript和RegisterClientScriptBlock方法。但是,这两个方法已经被淘汰。现在,可以使用Page.ClientScript属性来注册脚本。 5. JavaScript事件在服务器控件中的应用 ...
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), “click”, “alert(‘删除成功”+queryId+”‘)”, true);解决 asp.net onClientClick 与 验证控件冲突问题[removed] function ...
本资源摘要信息涵盖了 ASP.NET 的基础知识、ASP.NET 的开发环境搭建、ASP.NET 的编程语言特性、ASP.NET 的控件使用、ASP.NET 的事件处理等方面的知识点。 一、ASP.NET 概述 ASP.NET 是 Microsoft.NET Framework 的...
7. **客户端脚本交互**:VB.NET代码可以通过RegisterStartupScript或RegisterClientScriptBlock方法将JavaScript代码注入到客户端,实现服务器端和客户端的交互。 总的来说,这个"asp.net 移动没有标题栏的窗口源码...
用Page.ClientScript.RegisterClientScriptBlock 和Page.ClientScript.RegisterStartupScript:区别: 1.使用Page.ClientScript.RegisterClientScriptBlock c#代码 代码如下: <%@ Page Language=”C#” %> ...
二是通过脚本注册,使用Page.RegisterStartupScript或Page.ClientScript.RegisterClientScriptBlock方法在页面加载时动态添加JavaScript代码。这样可以实现页面的异步更新,提高用户体验。 JavaScript类在Web开发中...
例如,你可以使用RegisterStartupScript方法在页面上动态插入JavaScript代码,或者使用RegisterClientScriptBlock方法在页面头部插入自定义的JavaScript块。 最后,我们要了解回调技术,也就是CallBack。在传统的...
若需在客户端执行JavaScript,可以使用ScriptManager的RegisterStartupScript或RegisterClientScriptBlock方法来动态发送JavaScript脚本。 总之,ASP.NET AJAX框架极大地简化了AJAX应用的开发,通过服务器端控件和...