『急~~~~~』高手请指教!!!
请问 <asp:ScriptManager 、 <asp:updatepanel等是什么控件呀,我用的是vs2005
怎么运行的时候出现下面的错误:未知的服务器标记“asp:ScriptManager”。
怎样才能使用该控件呀,在线等,高手请赐教,谢谢!!
[解决办法]
MS 的 Ajax控件
[解决办法]
是关于.NET里新添加的一些AJAX控件
[解决办法]
没问题啊,拖进去,把事件添加就行了,
要通过编程方式控制页面上的ScriptManager,首先需要取得它在页面上的实例。ScriptManager控件是一个典型的Singleton模式的应用,每个ASP.NET AJAX页面上有且只能有一个ScriptManager的实例。ScriptManager类提供了一个静态的方法:GetCurrent(),该方法接受一个参数,即包含ScriptManager对象的页面的引用。这样,若希望在代码中得到当前页面上的ScriptManager对象,则可以使用下述代码:
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
当然,我们也可以直接使用ScriptManager的ID来对其进行引用。
ScriptManager提供一个名为RegisterAsyncPostBackControl()的方法,该方法接受一个类型为Control的参数。通过调用这个方法,我们可以告诉ScriptManager将页面中的该服务器端控件的传统整页回送模式改成Ajax的异步回送模式。例如,在前面一节的代码中,Page_Load()方法中有这样一条语句:
ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(btnInvokeBadMethod);
这样,若用户点击btnInvokeBadMethod按钮,将引发一次异步回送,而不是传统ASP.NET模型的整页回送。
注意,若代码中使用了RegisterAsyncPostBackControl()方法,则ScriptManager的EnablePartialRendering属性值一定要设置成true。
UpdatePanel中包围的内容以及其指定的作为触发器的控件均自动在ScriptManager中注册为采用异步方式进行回送,而无需我们手工干预。当然这是后话,关于UpdatePanel控件以及UpdatePanel的触发器,将在第4章中详细介绍。
我们同样可以以编程方式控制ScriptManager的EnablePartialRendering、Enable- ScriptGlobalization、EnablePageMethods和EnableScriptLocalization等属性。需要注意的是,修改这些属性值最好在Page的PreInit事件处理函数中进行。若晚于该阶段,ScriptManager将可能会抛出异常(取决于每个属性各自的设计,详情请参考ASP.NET AJAX在线帮助文档:http://ajax.asp.net/docs/)。下面的代码就在Page的PreInit中将EnablePartial- Rendering、EnableScriptGlobalization和EnableScriptLocalization属性值设置为true:
protected void Page_PreInit(object sender, EventArgs e)
{
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
theScriptManager.EnablePartialRendering = true;
theScriptManager.EnableScriptGlobalization = true;
theScriptManager.EnableScriptLocalization = true;
}
ScriptManager还提供了一个只读的布尔型属性:IsInAsyncPostBack。类似用传统ASP.NET模型中的Page.IsPostBack属性判断当前服务器执行的代码是否由回送引发,IsInAsyncPostBack可以用来判断当前服务器执行的代码是否是由异步回送所引发的。参见如下代码:
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
if (theScriptManager.IsInAsyncPostBack)
{
// 仅在异步回送中执行的代码。
}
}
ScriptManager的布尔型属性SupportsPartialRendering,用来判断当前的浏览器是否支持Ajax的局部更新功能,我们可以通过判断该属性来决定是在页面中启用Ajax,还是按照传统的方式进行整页回送:
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
if (theScriptManager.SupportsPartialRendering)
{
// 支持Ajax的浏览器,可以使用Ajax的高级功能。
}
else
{
// 不支持Ajax的浏览器,我们还是要按照传统的方式处理页面。
}
}
ScriptManager的布尔型属性IsDebuggingEnabled,用来判断当前的请求是否运行于Debug模式。如下代码即在Page_Load()方法中根据该属性值设定了ScriptManager的ScriptPath属性,将引用的脚本指向了不同的目录:
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
string scriptPathPrefix = theScriptManager.IsDebuggingEnabled ? "Debug/ " : "Release/ ";
foreach (ScriptReference scriptRef in theScriptManager.Scripts)
{
if (scriptRef.Path != string.Empty)
{
scriptRef.Path = scriptPathPrefix + scriptRef.Path;
}
}
}
ScriptManager提供的Scripts和Services两个属性将分别返回当前ScriptManager对象中引用的脚本文件和Web Service的集合。这样,我们即可在程序运行时通过维护这两个集合而动态地对页面中引用的脚本或Web Service代理进行维护。例如,下面的代码就在ScriptManager中添加了一个客户端脚本文件的引用:
ScriptManager theScriptManager = ScriptManager.GetCurrent(this);
theScriptManager.Scripts.Add(new ScriptReference( "MyControl.js "));
ScriptManager的作用远不止这些,它还提供了大量的用于注册页面中其他ASP.NET AJAX控件、脚本块以及数据的方法,均以“Register”开头。这些方法将广泛用于自定义ASP.NET AJAX服务器端控件开发中