代码改变世界

SharePoint 2007 母版页添加ScriptManager报错解决

2009-01-19 13:57  努力学习的小熊  阅读(1963)  评论(7编辑  收藏  举报

按照SharePoint Team Bolg文章,文章中建议大家将<ScriptManager>放置到母版页中,原因是如果动态添加,有时并不能保证在页面生命周期中比依赖他的控件更早的添加到页面中,而且有时代码如果编写的不好会造成页面中出现多个<ScriptManager>实例,这对于AJAX技术来说是错误的,一个页面上仅能存在一个支持AJAX技术的<ScriptManager>。所以建议将<ScriptManager>放置在母版页中,而不是在代码中来动态加载它。

这篇文章里面建议在页面的<WebPartPages:SPWebPartManager id="m" runat="Server" />标签下添加<ScriptManager>,我使用发布网站模板创建的网站,结果按照做之后发现是错误的,页面报错,仔细观察后发现,SPWebPartManager放置在了<form>标签之外,不是表单中的内容,我怀疑是这里的问题,便将<asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>添加到了<form>标签之内,刷新页面,错误解决。

这里也有一个需要注意的地方,在更换母版页的时候千万记得加上<asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>

default.master<WebPartPages:SPWebPartManager id="m" runat="Server" />确实出现在了<form>标签内,BlueBand.master却不是。

继续说另外一个问题,就是文章里面提到直接添加这个<ScriptManager>标签,但是实际上这是不行的,我们需要在页面上引入对应的组件和命名空间,组件System.Web.Extensions已经在web.config中添加过了,所以这里只需要引入命名空间即可,如果不引用的话页面会识别不出<ScriptManager>而报错。

在页面<html>上面加入如下命名空间

<%@ Register TagPrefix="asp" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" %>