<p>I need to extract multiple text/dropdown list fields from an asp.net form and format appropriately ready for sending to recipient via email.</p>

<p>What's the best way of reading those fields without having to hard code each item such as: </p>

<pre><code>item1 = InputField1.Text; 
item2 = InputField2.Text; 
</code></pre>

<p>I will have about 10 or 20 items on the same input form.</p>

Not sure why you're trying to do this - without more info it seems like you're probably taking an approach that is sub-optimal, but I digress. The form field values are also accessible via the Request.Form collection, which is a NameValueCollection if I recall. You could access that as-is like so:
```
```
foreach (string key in Request.Form.Keys) {
    string value = Request.Form[key];
    // format and use value here
}
```
```
If you need to format specific fields based on the field and type of data, you could do a copy to a dictionary like so:
```
```
Dictionary<string, object> values = new Dictionary<string, object>();

foreach (string key in Request.Form.Keys) {
    if (key.Equals("SpecialFieldName")) {
        // for example, parse an int
        values.Add(key, int.parse(Request.Form[key]));
    } else {
        // no special formatting required
        values.Add(key, Request.Form[key]);
    }
}
```
```