ASP.NET: Перемещение ViewState к низу страницы

Каковы последние и самые большие способы переместить ViewState в конец страницы

Это может быть сделано в IHttpHandler, который может быть указан в web.config для прерывания запросов к "*.aspx"?

<httpHandlers>
    <add verb="*" path="*.aspx" type="MyApp.OptimizedPageHandler" />
<httpHandlers>

Другие опции состоят в том, что это могло быть сделано в IHttpModule, но это не столь производительно, как он прервет все запросы.

Также в этом можно было выполнить класс, происходящий из Страницы или MasterPage-класса, но это не является столь же модульным.

Там какие-либо потери производительности к этому?

6
задан Seb Nilsson 4 March 2010 в 14:46
поделиться

3 ответа

Проведя небольшое исследование, я собрал эту запись в блоге .

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

public class ViewStateSeoHttpModule : IHttpModule {
    public void Init(HttpApplication context) {
        context.BeginRequest += new EventHandler(BeginRequest);
    }

    private void BeginRequest(object sender, EventArgs e) {
        HttpApplication application = sender as HttpApplication;

        bool isAspNetPageRequest = GetIsAspNetPageRequest(application);
        if(isAspNetPageRequest) {
            application.Context.Response.Filter =
                new ViewStateSeoFilter(application.Context.Response.Filter);
        }
    }

    private bool GetIsAspNetPageRequest(HttpApplication application) {
        bool isAspNetPageRequest = application.Context.Handler is System.Web.UI.Page;
        return isAspNetPageRequest;
    }
    // [...]
1
ответ дан 17 December 2019 в 18:14
поделиться

Вы можете контролировать, как и где данные ViewState загружаются и сохраняются, создавая собственную реализацию класса PageStatePersister . Затем создайте базовый класс для всех ваших страниц ASPX и переопределите метод PageStatePersister , чтобы вернуть свою собственную реализацию. Затем это может подключиться к любым событиям страницы, которые вы хотите сохранить в состоянии просмотра в соответствии с вашими требованиями.

Я сомневаюсь, что это того стоит. Вы без надобности храните тонны данных в ViewState ? Возможно, вы сможете получить больше преимуществ, просто меньше используя ViewState или отключив его для некоторых элементов управления, а не просто перемещая его в другое место на HTML-странице.

2
ответ дан 17 December 2019 в 18:14
поделиться

Расширение класса Page дает вам наибольший контроль над рендерингом страницы. Если вы хотите переместить ViewState в нижнюю часть данной страницы, используйте ваш пользовательский базовый класс для этой страницы. Если в этом нет необходимости, используйте класс Page.

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

0
ответ дан 17 December 2019 в 18:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: