| 11 |  | As all Wiki pages, this page is editable, this means that you can | 
                        | 12 |  | modify the contents of this page simply by using your | 
                        | 13 |  | web-browser. Simply click on the "Edit this page" link at the bottom | 
                        | 14 |  | of the page. WikiFormatting will give you a detailed description of | 
                        | 15 |  | available Wiki formatting commands. | 
                      
                        |  | 7 | 1. IContinuation for specifying page parameter types | 
                        |  | 8 | 1. Unsafe<T> for specifying unsafe/insecure page parameters | 
                        |  | 9 | 1. Continuation.ToUrl overloads for generating URLs from continuations + arguments | 
                        |  | 10 | 1. Continuation.TryParseX for parsing page parameters | 
            
                      
                        | 22 |  | You can use [wiki:TracAdmin trac-admin] to configure | 
                        | 23 |  | [http://trac.edgewall.org/ Trac] to better fit your project, especially in | 
                        | 24 |  | regard to ''components'', ''versions'' and ''milestones''. | 
                        | 25 |  |  | 
                        | 26 |  |  | 
                        | 27 |  | TracGuide is a good place to start. | 
                        | 28 |  |  | 
                        | 29 |  | Enjoy! [[BR]] | 
                        | 30 |  | ''The Trac Team'' | 
                        | 31 |  |  | 
                        | 32 |  | == Starting Points == | 
                        | 33 |  |  | 
                        | 34 |  | * TracGuide --  Built-in Documentation | 
                        | 35 |  | * [http://trac.edgewall.org/ The Trac project] -- Trac Open Source Project | 
                        | 36 |  | * [http://trac.edgewall.org/wiki/TracFaq Trac FAQ] -- Frequently Asked Questions | 
                        | 37 |  | * TracSupport --  Trac Support | 
                        | 38 |  |  | 
                        | 39 |  | For a complete list of local wiki pages, see TitleIndex. | 
                      
                        |  | 14 | A typed page parameter list is specified via an IContinuation<...> declaration, like so: | 
                        |  | 15 | {{{ | 
                        |  | 16 | public class SomePage : System.Web.Page, IContinuation<int, string> | 
                        |  | 17 | { | 
                        |  | 18 | ... | 
                        |  | 19 | } | 
                        |  | 20 | }}} | 
                        |  | 21 | This declares a page that accepts a protected Int32 as the first argument, and a protected string as the second argument. By default, all types specified in an IContinuation<...> declaration will be protected, which means they cannot be changed by clients. If you wish to declare that a certain page parameter is unprotected, then you need only wrap it with Unsafe<T>. For instance, suppose the integer argument from the above example should be unprotected: | 
                        |  | 22 | {{{ | 
                        |  | 23 | public class SomePage : System.Web.Page, IContinuation<Unsafe<int>, string> | 
                        |  | 24 | { | 
                        |  | 25 | ... | 
                        |  | 26 | } | 
                        |  | 27 | }}} | 
                        |  | 28 | Any type can appear as an argument to IContinuation<...>, not just primitive values. In fact, it's good practice in Clavis not to use primitive types since parameter names are generated from the class name by default: | 
                        |  | 29 | {{{ | 
                        |  | 30 | public class SomePage : System.Web.Page, IContinuation<Unsafe<Project>, Customer> | 
                        |  | 31 | { | 
                        |  | 32 | ... | 
                        |  | 33 | } | 
                        |  | 34 | }}} | 
                        |  | 35 | Clavis can also handle lists of values by specifying IEnumerable<T> as a parameter type: | 
                        |  | 36 | {{{ | 
                        |  | 37 | public class SomePage : System.Web.Page, IContinuation<IEnumerable<Project>, Customer> | 
                        |  | 38 | { | 
                        |  | 39 | ... | 
                        |  | 40 | } | 
                        |  | 41 | }}} | 
                        |  | 42 | IEnumerable<T> and Unsafe<T> can also be nested, so you can have an unsafe list of objects as a parameter: | 
                        |  | 43 | {{{ | 
                        |  | 44 | public class SomePage : System.Web.Page, IContinuation<Unsafe<IEnumerable<Project>>, Customer> | 
                        |  | 45 | { | 
                        |  | 46 | ... | 
                        |  | 47 | } | 
                        |  | 48 | }}} |