在第一次检查时,似乎确实如此.对调用堆栈的快速检查表明传递给委托的方法是按照预期执行的.然而….
在“单击事件”中调用委托并尝试修改控件(例如可见性,绑定,更新更新面板)时没有任何反应(事实上,对于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而突然改变.