2009-10-29 5 views
1

Я создал интерфейс маркера:ASP.NET UpdatePanel постбэков

public interface ISupportAJAXPostsBacks{} 

Я добавил его к моей странице ..

public partial class MyWebForm : PageBase, ISupportAJAXPostsBacks 

У меня есть этот чек в моем классе PageBase ...

if(this is ISupportAJAXPostsBacks) 
{ 
    ... do some stuff ... 
} 

Если я пройду через отладчик, «это ISupportAJAXPostsBacks» оценивает значение true для начальной загрузки страницы, но вычисляет значение false, когда UpdatePanel отправляет сообщения на эту же страницу. (царапины)

Что происходит под крышками, чтобы вызвать это и что я могу с этим поделать?

+0

Возможно, только обновление содержимого панели обновления, а не всей страницы. Возможно, все зависит от того, где делается вызов этого оператора if. – ChadNC

+0

Не могли бы вы добавить этот код, прежде чем проверять, является ли это ISupportAjax: Console.WriteLine (GetType(). FullName); и расскажите, что написано в представлении «Вывод» визуальной студии? –

ответ

1

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

0

Я не мог воспроизвести вашу ситуацию, но некоторые идеи для вещей, чтобы проверить ...

-The если заявление должно быть в переопределение OnLoad в вашем PageBase

-The если заявление должно быть перед base.OnLoad (е) вызов в этом методе коррекции

-Проверьте настройки на вашем управления ScriptManager ... в частности EnablePartialRendering и EnablePageMethods

Я думаю, что последний пункт будет только проблема, если вы фактически использовали эти методы, но если вы их включили, я попытаюсь отключить их. Надеюсь, это поможет.