Control <f:collectionForm> slouží k uložení dat z odeslaného formuláře do prvku kolekce. Control podporuje validaci zaslaných dat na straně serveru, viz Koncepty/Formuláře.
<f:collectionForm runat="server"
targetCollection="someCollection">
<formTemplate>
<f:input runat="server"
id="someFormField"
targetField="someFieldofSomeCollection" />
<f:sendButton runat="server" />
</formTemplate>
<sentTemplate>
Formulář byl úspěšně odeslán.
</sentTemplate>
</f:collectionForm>
Pro poslání dat z formuláře na email slouží <f:emailForm>.
Atributy
id povinný [string]
Jedinečné jméno controlu. Pod tímto jménem je obsah controlu dostupný v šabloně emailu. Zároveň je toto jméno použito jako jméno prvku ve formuláři, tj. je zapsáno do atributu
namepříslušného HTML elementu.resetOnSend nepovinný [true, false]
Při nastavení se po odeslání formuláře zobrazí obě šablony
formTemplateisentTemplate. Ve výchozím nastavení false se zobrazí jen šablonasentTemplate.targetCollection povinný [jméno cílové kolekce]
Jméno kolekce definované v Site.config, do které se ukládají odeslaná data.
Templates
Před odesláním formuláře se na stránce zobrazuje obsah formTemplate, po úspěšném odeslání potom sentTemplate.
- formTemplate – template s formulářem. Může obsahovat tyto formulářové pole:
<f:input>
<f:textarea>
<f:check>
<f:select>
<f:hidden>
<f:const>
<f:sendbutton> - sentTemplate – obsah template se vypíše po úspěšném odeslání formuláře uživatelem (tj. obsah všech formulářových polí projde úspěšně validací na straně serveru).
Příklad
Jednoduchý kontaktní formulář s poli pro email uživatele a text zprávy uděláme takto:
<form method="post" runat="server">
<f:CollectionForm runat="server"
id="contact"
targetCollection="messageCol">
<formTemplate>
<label>
Vaše jméno*
<f:input runat="server"
id="name"
targetField="name" />
</label>
<label>
Email*
<f:input runat="server"
id="email"
targetField="email" />
</label>
<label>
Zpráva*
<f:textarea runat="server"
id="message"
targetField="message" />
</label>
<f:sendButton runat="server"
value="Odeslat" />
</formTemplate>
<sentTemplate>
<p>Zpráva byla odeslána. Díky!</p>
</sentTemplate>
</f:CollectionForm>
</form>
Data ukládáme do kolekce messageCol (atribut targetCollection="messageCol"), musíme ji tedy mít deklarovanou v Site.config i s patřičným typem jejích prvků:
...
<Vars>
...
<Collection name="messageCol" itemType="MessageItem" />
...
</Vars>
...
<Types>
...
<Type name="MessageItem">
<SimpleText name="name" />
<SimpleText name="email" />
<Text name="message" />
</Type>
...
</Types>
...
Validace dat
Příklad je pro názornost a přehlednost uveden bez validace zaslaných dat. O tom, jak validovat zaslaná data na straně serveru, se píše v článku Koncepty/Formuláře.