日期:2014-05-18  浏览次数:20521 次

『急~~~~~』高手请指教!!!

    请问 <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)

{