I'm trying to build a .net control, based on the AutoForm source, which can be used to create mail contact forms with dynamic fields.
I've got the control so that it builds the form correctly, but I can't figure out the proper way to reference the contents of the dynamic fields to include them in my e-mail message. I don't want to store the messages in Umbraco, I just want to send an e-mail.
Can anyone give me a .NET lesson??
Here's my code snippet, help greatly appreciated!
Code: override protected void OnInit(EventArgs e)
{
base.OnInit(e);
buildForm();
}
private void buildForm()
{
//GET THE DOCUMENT TYPE USED TO BUILD THE FORM
foreach (umbraco.cms.businesslogic.ContentType.TabI t in new umbraco.cms.businesslogic.web.DocumentType(_nodeTypeId).getVirtualTabs)
{
//GET THE FIELDS USED IN THE FORM BY SELECTING THE APPROPRIATE TAB
if (("," + _tabName + ",").IndexOf("," + t.Caption.ToLower() + ",") > -1)
{
//GET THE PROPERTY TYPES FROM THE SELECTED TAB
foreach (umbraco.cms.businesslogic.propertytype.PropertyType pt in t.PropertyTypes)
{
umbraco.interfaces.IDataType dt = pt.DataTypeDefinition.DataType;
dt.DataEditor.Editor.ID = pt.Alias;
umbraco.interfaces.IData df = pt.DataTypeDefinition.DataType.Data;
((Control)dt.DataEditor.Editor).ID = pt.Alias;
phFormFields.Controls.Add(new LiteralControl("<fieldset><label for=\"" + userControlId + ((Control)dt.DataEditor.Editor).ClientID + "\">" + pt.Name + ":</label>"));
phFormFields.Controls.Add((Control)dt.DataEditor.Editor);
// ... ADD VALIDATION CONTROLS for MANDITORY & REGEX FIELDS ...
phFormFields.Controls.Add(new LiteralControl("</fieldset>"));
}
}
}
}
private void sendMail()
{
// ... USE SYSTEM.NET.MAIL TO SEND SMTP
// ... GET BODY OF MAIL TEXT WITH buildMsgBody() ...
}
private string buildMsgBody()
{
StringBuilder sb = new StringBuilder();
// **** HOW DO I REFERENCE THE DYNAMICALLY CREATED CONTROLS?
// **** I NEED TO GRAB TEXT CONTENTS FROM CONTROLS HERE....
return sb.ToString();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
sendMail();
}
}
Hope that formats correctly! Thanks for the help.
Tom