Dflying Chen @ cnblogs
Be a programmer here. Atlas, ASP.NET, .NET, Javascript, PHP, and C#
博客堂Blog:
http://blog.joycode.com/dflying/
Daily Life:
http://dflying.spaces.live.com/
博客园
首页
社区
新随笔
联系
订阅
管理
随笔-313 评论-12138 文章-1 trackbacks-256
ASP.NET AJAX(Atlas)现存的一些常见问题以及解决方案[持续更新]
根据这一周的用户反馈来讲,ASP.NET AJAX(Atlas)从CTP到Beta 1,不能说是一个“进步”,当然也不能说是“退步”。作为一个变化如此巨大的新版本,ASP.NET AJAX似乎有些不够稳定,本文将列举出一些开发者社区中常见的问题以及相应的解决方案,并将不断更新,希望对各位朋友有所帮助。
以下两条来自微软公司的总监Shawn Burke的Blog(
http://blogs.msdn.com/sburke/
)。
从客户端调用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
>
在模板控件(例如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;
//
模版控件用这个
}
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2006-10-27 17:54
Dflying Chen
阅读(4424)
评论(20)
编辑
收藏
评论:
1597964
#1楼
2006-10-27 21:33
|
阿一
是啊,有点麻烦。好多人问这个问题啊。
回复
引用
查看
#2楼
[
楼主
]
2006-10-27 21:35
|
Dflying Chen
@阿一
这个Beta 1的Bug好多阿……
回复
引用
查看
#3楼
2006-10-28 00:21
|
THIN
@Dflying Chen
第二个刚碰到了,可以用脚本解决
回复
引用
查看
#4楼
[
楼主
]
2006-10-28 09:50
|
Dflying Chen
@THIN
大哥怎么解决的阿?能不能分享一下?
回复
引用
查看
#5楼
2006-10-28 15:16
|
leoxu[未注册用户]
我碰到使用UPDATPANEL的问题。
能帮忙我看一下吗?
http://post.youboy.com/topiclist.jsp?topicid=167595
asp.net ajax UpdatePanel 控件 问题
先谢谢了。
回复
引用
#6楼
[
楼主
]
2006-10-28 16:31
|
Dflying Chen
@leoxu
估计是FCKEDIOTR有什么问题吧……这个就太难说了,那个FCKEDIOTR用了太多的JavaScript,说不定什么地方就会有冲突的……
回复
引用
查看
#7楼
2006-10-28 17:27
|
可可[匿名][未注册用户]
快乐的我的人生,是我成功的动力。
回复
引用
#8楼
[
楼主
]
2006-10-28 20:07
|
Dflying Chen
@可可[匿名]
名人名言?
回复
引用
查看
#9楼
2006-10-29 11:55
|
DaiWei[匿名][未注册用户]
this.ChoiceView.NavigateUrl = "javascript:SetNodeView('" + this.ResolveUrl("~/UIWorkFlow/ChoiceView.aspx") + "','" + this.Name.ClientID + "','" + this.HViewID.ClientID + "');";
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string script = @"
function SetNodeView(url,txtControlID,IdControlID)
{
var sReturn=window.showModalDialog(url,'ChoiceView','dialogHeight:600px;dialogWidth:800px;status:no;help:no;');
if(sReturn!=null && sReturn!='undefined')
{
var s = new Array();
s = sReturn.split(',');
$get(IdControlID).value = s[0];
$get(txtControlID).value = s[1];
}
}";
Microsoft.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), this.ClientID, script, true);
}
回复
引用
#10楼
[
楼主
]
2006-10-29 12:15
|
Dflying Chen
@DaiWei[匿名]
能否简要解释一下呢?
回复
引用
查看
#11楼
2006-11-09 11:05
|
DaiWei[匿名][未注册用户]
PageMethodes的BUG已在BETA2中修正了.可以在CS中申明
回复
引用
#12楼
[
楼主
]
2006-11-09 11:25
|
Dflying Chen
@DaiWei[匿名]
恩,真不错!
回复
引用
查看
#13楼
2006-11-09 18:02
|
df[未注册用户]
我写的WEBSERVICE加了这个[Microsoft.Web.Script.Services.ScriptService()]
还是在JS调试里面报错:我写的WEBSERVICE没定义
真烦
回复
引用
#14楼
[
楼主
]
2006-11-09 21:03
|
Dflying Chen
这个Web Service的Proxy又没有下载过来呢?检查一下web.config吧
回复
引用
查看
#15楼
2006-11-14 20:30
|
哈哈[匿名][未注册用户]
Bingo,THX
回复
引用
#16楼
[
楼主
]
2006-11-14 23:06
|
Dflying Chen
@哈哈[匿名]
:)有帮助就好!
回复
引用
查看
#17楼
2006-12-14 15:45
|
mimosa[未注册用户]
昨天我也遇到第二个问题了,我在updatepanel中放了个formview并让formview具有自动分页功能,按照您的说法在page-load中也进行了绑定。。。。。。但是点formview中的分页页码还是出现整页刷新。。。。。。。老大这是怎么回事?
回复
引用
#18楼
[
楼主
]
2006-12-15 19:19
|
Dflying Chen
@mimosa
又没有相关代码呢?
回复
引用
查看
#19楼
2009-07-28 17:24
|
杨文彬9
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.handle{
width:10px;
height:10px;
background-color:#aaccee;
}
.resizing{
padding:0px;
border-style:solid;
border-width:3px;
border-color:#aaccee;
}
.modalFilter{
background-color:#aaccee;
}
</style>
<script runat="server" language="C#">
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static CascadingDropDownNameValue[]
GetStates(string konwnCategoryValues, string category)
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Washington","Washington"),
new CascadingDropDownNameValue("Oregon","Oregon")
};
}
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static CascadingDropDownNameValue[]
GetCounties(string konwnCategoryValues, string category)
{
if (konwnCategoryValues.Contains("Washington"))
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Adams","Adams"),
new CascadingDropDownNameValue("Asotin","Asotin"),
new CascadingDropDownNameValue("Benton","Benton"),
new CascadingDropDownNameValue("Chelan","Chelan"),
new CascadingDropDownNameValue("Clallam","Clallam")
};
}
else
{
if (konwnCategoryValues.Contains("Oregon"))
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Backer","Backer"),
new CascadingDropDownNameValue("Benton","Benton"),
new CascadingDropDownNameValue("Clackamas","Clackamas"),
new CascadingDropDownNameValue("Clatsop","Clatsop"),
new CascadingDropDownNameValue("Columbia","Columbia")
};
}
else
{
return null;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<br />
<br />
<asp:DropDownList ID="DropDownList1" runat="server" Width="200px">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" Width="200px">
</asp:DropDownList>
<br />
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="DropDownList1"
PromptText="Select a State"
Category="state"
LoadingText="[Loding States]"
ServiceMethod="GetStates"
>
</cc1:CascadingDropDown>
<cc1:CascadingDropDown ID="CascadingDropDown2" runat="server"
TargetControlID="DropDownList2"
ParentControlID="DropDownList1"
PromptText="Select County hurry!"
Category="county"
LoadingText="[Loading Counties]"
ServiceMethod="GetCounties"
>
</cc1:CascadingDropDown>
2009-07-28 17:20 杨文彬9:
郁闷了 我小白
回复
引用
查看
#20楼
2009-07-28 17:24
|
杨文彬9
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="System.Web.Services" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
<style type="text/css">
.handle{
width:10px;
height:10px;
background-color:#aaccee;
}
.resizing{
padding:0px;
border-style:solid;
border-width:3px;
border-color:#aaccee;
}
.modalFilter{
background-color:#aaccee;
}
</style>
<script runat="server" language="C#">
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static CascadingDropDownNameValue[]
GetStates(string konwnCategoryValues, string category)
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Washington","Washington"),
new CascadingDropDownNameValue("Oregon","Oregon")
};
}
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static CascadingDropDownNameValue[]
GetCounties(string konwnCategoryValues, string category)
{
if (konwnCategoryValues.Contains("Washington"))
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Adams","Adams"),
new CascadingDropDownNameValue("Asotin","Asotin"),
new CascadingDropDownNameValue("Benton","Benton"),
new CascadingDropDownNameValue("Chelan","Chelan"),
new CascadingDropDownNameValue("Clallam","Clallam")
};
}
else
{
if (konwnCategoryValues.Contains("Oregon"))
{
return new CascadingDropDownNameValue[]
{
new CascadingDropDownNameValue("Backer","Backer"),
new CascadingDropDownNameValue("Benton","Benton"),
new CascadingDropDownNameValue("Clackamas","Clackamas"),
new CascadingDropDownNameValue("Clatsop","Clatsop"),
new CascadingDropDownNameValue("Columbia","Columbia")
};
}
else
{
return null;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<br />
<br />
<asp:DropDownList ID="DropDownList1" runat="server" Width="200px">
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" Width="200px">
</asp:DropDownList>
<br />
<cc1:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="DropDownList1"
PromptText="Select a State"
Category="state"
LoadingText="[Loding States]"
ServiceMethod="GetStates"
>
</cc1:CascadingDropDown>
<cc1:CascadingDropDown ID="CascadingDropDown2" runat="server"
TargetControlID="DropDownList2"
ParentControlID="DropDownList1"
PromptText="Select County hurry!"
Category="county"
LoadingText="[Loading Counties]"
ServiceMethod="GetCounties"
>
</cc1:CascadingDropDown>
2009-07-28 17:20
回复
引用
查看
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
最想要的Entity Framework功能
·
专访Jeffrey Richter:Windows 8是微软的重中之重
·
《福布斯》:谷歌进军硬件产品 难撼动苹果地位
·
美国空军拟最多购买1.8万台iPad 2
·
分析称专利之争让谷歌苹果两败俱伤
»
更多新闻...
最新知识库文章
:
·
高级编程语言的发展历程
·
如何学习一门新的编程语言?
·
学习不同编程语言的重要性
·
为什么我喜欢富于表达性的编程语言
·
计算机专业的女生为什么要学编程
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
除非特别声明,本站内所有资源,包括但不限于文章,代码,图片等,均应用于
Dflying版权说明
。
关于ASP.NET AJAX,您可以:
直接阅读ASP.NET AJAX文章分类
Atlas文章打包下载(截至4/28/2006)
加入ASP.NET AJAX学习团队
询问关于ASP.NET AJAX的问题
加入ASP.NET AJAX讨论群
阅读愚作《ASP.NET AJAX程序设计》
关于Windows Vista,您可以:
加入Windows Vista开发团队!
昵称:
Dflying Chen
园龄:
5年10个月
粉丝:
127
关注:
0
搜索
最新随笔
1. 《博客园精华集》ASP.NET分册第2论筛选结果文章列表
2. 本周ASP.NET英文技术文章推荐[03/23 - 04/05]:C#、Visual Studio、MVC、死锁、Web 2.0 API、jQuery、IIS7、FileUpload
3. 本周ASP.NET英文技术文章推荐[03/16 - 03/22]:MVC、LINQ、Blog、C#、RSS、ViewManager
4. 本周ASP.NET英文技术文章推荐[03/02 - 03/15]:ASP.NET AJAX、LinqDataSource、ListView、MVC、JavaScript、智能感知、Ext、CAPTCHA
5. 《构建可扩展的Web站点》书评
6. 完成这最后的20%——《持续集成——软件质量改进和风险降低之道》书评
7. 本周ASP.NET英文技术文章暂停一周
8. 本周ASP.NET英文技术文章推荐[02/24 - 03/01]:Silverlight、AJAX、Web Client Software Factory、LINQ、上传文件、GDI+
9. 本周ASP.NET英文技术文章推荐[02/17 - 02/23]:AJAX、History、jQuery、最佳实践、LINQ、Visual Studio、JavaScript、IIS
10. 本周ASP.NET英文技术文章推荐[02/03 - 02/16]:MVC、Visual Studio 2008、安全性、性能、LINQ to JavaScript、jQuery
随笔分类
(352)
.NET 综合(6)
ASP.NET AJAX (Atlas)(116)
ASP.NET 综合(18)
ASP.NET英文技术文章推荐(45)
Atlas团队相关(7)
C#(3)
digg.com网站Programming分类每周热点(3)
NLog(11)
Others 未归类(36)
Windows Vista开发(10)
程序、人生、感悟(21)
我的著作&写作生活(50)
新技术介绍(26)
用户体验和可用性
随笔档案
(313)
2008年6月 (1)
2008年4月 (1)
2008年3月 (6)
2008年2月 (4)
2008年1月 (4)
2007年12月 (1)
2007年11月 (1)
2007年10月 (1)
2007年9月 (5)
2007年8月 (2)
2007年7月 (17)
2007年6月 (26)
2007年5月 (18)
2007年4月 (14)
2007年3月 (32)
2007年2月 (15)
2007年1月 (5)
2006年12月 (28)
2006年11月 (32)
2006年10月 (14)
2006年9月 (7)
2006年8月 (3)
2006年7月 (1)
2006年6月 (4)
2006年5月 (28)
2006年4月 (38)
2006年3月 (5)
Blog Roll
Jeff Zhao
Jesse Zhao
Kevin Wan
博文视点官方博客
维生素C.NET
Dflying的其他Blog
Dflying's Night
Dflying的日常生活Blog
Dflying在博客堂的Blog
刚刚开张,欢迎支持!
Me, Dflying
Dflying的英文技术Blog
Programmer Dflying
Dflying的英文技术Blog(停止更新)
Online Chat
统计信息
积分与排名
积分 - 2442908
排名 - 7
最新评论
阅读排行榜
评论排行榜