ASP.NET WebFormsMVP PageDataSource События, выполняющиеся дважды по неизвестной причине - PullRequest
0 голосов
/ 21 сентября 2010

Проблема в 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-файл .

Обновление:

Как уже отмечалось, инициализация выглядит нормально, поэтому проблема должна заключаться в конфликте с каким-либо другим аспектом приложения.

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

У меня была та же проблема, быстрое решение - установить AutoDataBind = false для вашего пользовательского элемента управления.Это останавливает второй вызов DataBind FormView, который, в свою очередь, останавливает второй вызов SelectMethod.Первый вызов formView.DataBind происходит как часть Page.ProcessRequestMain и происходит из-за DataSourceID в сетке данных.

1 голос
/ 22 сентября 2010

Я хотел опубликовать это как комментарий к вашему вопросу, но ТАК или не дает мне этой привилегии, потому что у меня недостаточно количества значков (могу ли я торговать в FourSquare?), Или UX просто смущает меня тожемного.Вот мой ответ без ответа:

Является ли отправленный вами файл trace.axd для демонстрации проблемы?Все это выглядит нормально для меня.Связывает только один презентатор:

Создание презентатора типа ADC.Logic.Presenters.UserOtherEditPresenter для представления типа ADC.Logic.Views.IUserOtherEditView`1 [[ADC.Logic.Views.Models.UserEditViewModel, ADC.Logic, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль]].(Фактический экземпляр представления имеет тип ASP.controls_userotheredit_ascx.

Согласно заголовку вашего вопроса, мы ожидаем увидеть это событие дважды.

Однако заголовок и содержание вашего вопроса мне не подходят. Вы говорите, что SelectMethod запускается несколько раз, что может указывать на проблему с PageDataSource.

Не могли бы вы уточнить, пожалуйста?

...