ASP.NET AJAX(Atlas)现存的一些常见问题以及解决方案

发布时间: 2007-01-25 11:38    作者: 未知    来源: 未知    浏览:    评论

根据这一周的用户反馈来讲,ASP.NET AJAX(Atlas)从CTP到Beta 1,不能说是一个“进步”,当然也不能说是“退步”。作为一个变化如此巨大的新版本,ASP.NET AJAX似乎有些不够稳定,本文将列举出一些开发者社区中常见的问题以及相应的解决方案,并将不断更新,希望对各位朋友有所帮助。

以下两条来自微软公司的总监Shawn Burke的Blog(http://blogs.msdn.com/sburke/)。

1.从客户端调用Web Method时发生[Method Error 12031]或[Method Error 500]异常

若要从客户端调用某个服务器端Web Service中的Web Method,则该Web Service必须拥有Microsoft.Web.Script.Services.ScriptServiceAttribute属性:
[Microsoft.Web.Script.Services.ScriptService()]
public class MyService : System.Web.Services.WebService {
 
// 
}

 


若要从客户端调用某个定义与页面中的Page Method,则该Page Method必须用Microsoft.Web.Script.Services.ScriptMethodAttribute属性修饰(当然,System.Web.Services.WebMethod也是必不可少的),且必须为静态(static)方法。目前版本的一个Bug还导致我们必须在ASPX文件中定义这个Web Method,在CS文件中定义是没有作用的(真是无奈):

 

<script runat="server">
[System.Web.Services.WebMethod]
[Microsoft.Web.Script.Services.ScriptMethod]
    
public static string GetHtml(string contextKey) {
        
// 
    }

</script>



2.在模板控件(例如Login)或者数据绑定控件(例如GridView)中,Extender Control(包括AJAX Control Toolkit)无法正常工作

原因在于,Beta 1中所有的客户端脚本统一由ScriptManager管理,而ScriptManager是在PreRender时期遍历页面中的控件并输出必要的客户端脚本,但模板中的内容通常也是在PreRender时才生成的,这样二者错失了沟通的机会,自然模版中的Extender Control所必须的客户端脚本将不会被发送至浏览器,也就最终导致了Extender Control无法在模板控件中使用。

解决方法就是在PreRender之前,例如Load事件中强制让页面生成模版控件或数据绑定控件的内容,这样在PreRender的时候ScriptManager就可以正确找到他们了:

 

protected void Page_Load(object sender, EventArgs e)
{
    GridView1.DataBind(); 
// 数据绑定控件用这个

    
object o = Login1.Controls; // 模版控件用这个
}

转自http://www.cnblogs.com/dflying/archive/2006/10/27/ASPNET_AJAX_Beta_1_FAQ.html



TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多