ASP.NET WebFormsMVP PageDataSource事件因未知原因执行两次

时间:2010-09-21 04:51:24

标签: asp.net webforms webformsmvp

问题是 SelectMethod ,其他操作执行两次。这很难分离,因为它只发生在更大的解决方案上,而不是更简单的演示应用程序。

//.ascx
<asp:FormView runat="server" DataSourceID="userSource" DefaultMode="Edit">
    <EditItemTemplate>

<mvp:PageDataSource id="userSource" SelectMethod="GetUser" />

//code behind 
public User GetUser()
{
     //returning single item as FormView is only DefaultMode=edit
     return Model.User;
}

//presenter
public class UserOtherEditPresenter<IUserOtherEditView<UserEditViewModel>>

在此尝试调试此处的是跟踪AXD file

更新

正如已经指出初始化似乎很好,所以问题必须在与应用程序的其他方面冲突的其他地方。

2 个答案:

答案 0 :(得分:1)

我想发布这个作为你的问题的评论,但是要么没有给我这个特权,因为我的徽章数量不足(我可以交易FourSquare吗?),或者UX也让我感到困惑许多。这是我的非答案答案:

您发送的trace.axd是否可以证明问题?这对我来说都很正常。它只对一位主持人具有约束力:

  

创建ADC.Logic.Presenters.UserOtherEditPresenter类型的演示者,以查看类型ADC.Logic.Views.IUserOtherEditView`1 [[ADC.Logic.Views.Models.UserEditViewModel,ADC.Logic,Version = 1.0.0.0,Culture =中立,PublicKeyToken = null]]。 (实际的视图实例是ASP.controls_userotheredit_ascx类型。

根据你问题的标题,我们希望看到这个事件两次。

但是,您问题的标题内容与我不符。你说SelectMethod被多次触发,这可能表明PageDataSource有问题。

你能澄清一下吗?

答案 1 :(得分:1)

我遇到了同样的问题,快速解决方法是为用户控件设置AutoDataBind = false。这将停止对FormView的DataBind的第二次调用,从而停止对SelectMethod的第二次调用。 第一次调用formView.DataBind是作为Page.ProcessRequestMain的一部分发生的,并且由于数据网格上的DataSourceID而发生。