# Načtení obsahu až na postback

**URL:** <https://forum.dotvvm.com/t/nacteni-obsahu-az-na-postback/213>\
**Category:** Discussion in Czech\
**Created:** [June 8, 2024, 9:28am UTC](https://forum.dotvvm.com/t/nacteni-obsahu-az-na-postback/213 "2024-06-08T09:28:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![holajan](https://forum.dotvvm.com/user_avatar/forum.dotvvm.com/holajan/32/35_2.png) [@holajan](https://forum.dotvvm.com/u/holajan)\
**Post date:** [June 8, 2024, 9:28am UTC](https://forum.dotvvm.com/t/nacteni-obsahu-az-na-postback/213/1 "2024-06-08T09:28:02Z")

</div>

Ahoj,  
Chtěl bych udělat, aby se nejaký kus stránky načetl až na postback (např. až na tlačítko). Jde mi o to, aby ta část stránky nebyla ve stránce zbytečně vyrenderovaná dopředu (skrytá), když není potřeba. Jak tento scénář efektivně řešit?

Zkouším to přes **LoadablePanel** z DotVVM.Contrib.LoadablePanel, ale nevím jak to donutit, aby se jeho **Load** zavolal až při zobrazení a né hned při najíždění stránky.

Pseudo kód vypadá nějak takto:

```auto
<dot:LinkButton Click="{staticCommand: Show = true}">Show</dot:LinkButton>

<dc:LoadablePanel Load="{command: ZboziInfo = LoadZboziInfo()}" Visible="{value: Show}">
    <ContentTemplate>
        <div>
            <local:ZboziInfo DataContext="{value: ZboziInfo}" />

            <dot:LinkButton Click="{staticCommand: Show = false}">Hide</dot:LinkButton>
        </div>
    </ContentTemplate>
</dc:LoadablePanel>

```

Díky za radu

---

<div class="post-metadata">

**Author:** ![exyi](https://forum.dotvvm.com/user_avatar/forum.dotvvm.com/exyi/32/9_2.png) [@exyi](https://forum.dotvvm.com/u/exyi)\
**Post date:** [June 9, 2024, 3:34pm UTC](https://forum.dotvvm.com/t/nacteni-obsahu-az-na-postback/213/2 "2024-06-09T15:34:33Z")

</div>

Ahoj, myslím, že nejsnažší řešení je pomocí Postback.Update property a resource bindingu v IncludeInPage ([Server-side rendering | DotVVM Documentation](https://www.dotvvm.com/docs/4.0/pages/concepts/server-side-rendering#re-render-control-html-on-postbacks)), pokud vám nevadí, že se HTML controlky bude přenášet při každém postbacku kdy je zobrazená.

```auto
<div Postback.Update
     IncludeInPage={resource: ZboziInfo != null}>
     <local:ZboziInfo DataContext={value: ZboziInfo} />
</div>

```

Ten LoadablePanel (a většina dalších řešení) pošle při prvním requestu tu vaší komponentu vyrenderovanou v client-side módu a nulovým DataContextem – neměla by tedy obsahovat žádná data. Pak ale podle mě stačí mít ve stránce `<local:ZboziInfo DataContext={value: ZboziInfo} />`, `ZboziInfo = null` ve viewmodelu a nastavit ho v tom Click commandu

---

<div class="post-metadata">

**Author:** ![holajan](https://forum.dotvvm.com/user_avatar/forum.dotvvm.com/holajan/32/35_2.png) [@holajan](https://forum.dotvvm.com/u/holajan)\
**Post date:** [June 19, 2024, 9:10am UTC](https://forum.dotvvm.com/t/nacteni-obsahu-az-na-postback/213/3 "2024-06-19T09:10:40Z")

</div>

Ahoj,  
Díky, s tím Postback.Update=“true” a IncludeInPage mi to funguje.  
Navíc to mám uvnitř Modal dialogu takto:

```auto
<bs:ModalDialog IsDisplayed="{value: ZboziInfo != null}" UseBackdrop="true" AddCloseButton="false" CloseOnBackdropClick="false" CloseOnEscape="false" Size="XLarge" VerticalAlignment="Center">
    <Content>
        <div Postback.Update="true" IncludeInPage="{value: ZboziInfo != null}">
            <div class="modal-close-button">
                <dot:LinkButton class="close-button" Click="{staticCommand: ZboziInfo = null}">{{resource: Resources.Global_Close}}</dot:LinkButton>
            </div>
            <local:ZboziInfo DataContext="{value: ZboziInfo}" />
        </div>
    </Content>
</bs:ModalDialog>

<dot:LinkButton Click="{command: ZboziInfo = LoadZboziInfo()}">Show</dot:LinkButton>

```
