随笔-312  评论-12034  文章-2  trackbacks-256
根据这一周的用户反馈来讲,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 阅读(4139) 评论(18)  编辑 收藏 网摘 所属分类: ASP.NET AJAX (Atlas)

评论:
#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
又没有相关代码呢?

  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 542122




相关文章:

相关链接: