『急~~~~~』高手请指教!!!
请问 <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)
{