在第一次检查时,似乎确实如此.对调用堆栈的快速检查表明传递给委托的方法是按照预期执行的.然而….
在“单击事件”中调用委托并尝试修改控件(例如可见性,绑定,更新更新面板)时没有任何反应(事实上,对于UpdatePanel.Update的显式调用,会抛出一个异常,说该方法不能在Render之后调用 – 尽管如此,我觉得不是在页面生命周期的那个阶段,而是在一个控制事件中 – 总是作为一个回发事件处理,总是在Render之前,据我所知.).
但是…当返回到调用站点并执行相同的代码(在委托调用之后)我尝试执行(从委托调用的方法中)以影响对各种控件的更改时,它可以正常工作.
会发生什么事?
编辑
框架代码:
IModalWorkflowItem { void ExecuteWorkflow(); ..... } public abstract class BaseModalWorkflow : IModalWorkflowItem { .... protected Func<String,IminervaValidator,Boolean>_action; .... /// <summary> /// Using the properties (if necessary) perform the action /// required on completion of modal workflow /// </summary> /// <returns></returns>; protected abstract Boolean PerformAction(propertybag properties); }
创建以lambda身份传递的对象作为匿名方法…
new ModalWorkflowUserGroupAction(ModalPopupExtender_UserPrompt,Session,(x,y) => { if (UserGroupManager.UserAccesstoUserGroup(membershipID,CurrentUserGroup.UserGroupID,false)) { BindUserList();
实际通话:
/// <summary> /// Call the next action in the modal workflow. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ExpandingButton_ModalConfirmContinue_Click (Object sender,EventArgs e) { if (CurrentModalWorkFlowItem != null) { CurrentModalWorkFlowItem.ExecuteWorkflow();
解决方法
是的,在任何.NET程序类型中,同步调用任何委托.这种事情并没有因为你碰巧使用ASP.NET而突然改变.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。