/// <summary>
        /// Populates defaults and opens edit form to add new record
        /// GET: /Admin/UrlRedirect/Create
        /// </summary>
        public ActionResult Create()
        {
            Breadcrumbs.Current.AddBreadcrumb(3, "Add Url Redirect");
            var record = new Models.UrlRedirect();

            // any default values can be set here or in partial class UrlRedirect.InitDefaults()
            return(View("UrlRedirectEdit", record));
        }
        private void Save(Models.UrlRedirect record, bool isNew)
        {
            // add any code to update other fields/tables here
            record.Save();

            // add redirects to Route table
            //var app = HttpContext.ApplicationInstance as MvcApplication;
            //var routes = RouteTable.Routes;
            //routes.RemoveRouteByName("urlRedirect"+record.ID);
            //var route = new Route(record.RedirectFromUrl, new RouteValueDictionary(){ controller = "UrlRedirect", action = "Index", id = record.ID }, MvcUtil.SiteControllerNamespaceArray);
            //routes.InsertRouteAfter("urlRedirectPlaceholder", );
            //routes.MapRoute("urlRedirect"+record.ID, );
        }
        protected ActionResult ProcessForm(Models.UrlRedirect record)
        {
            try {
                record.UpdateFromRequest();

                if (record.RedirectFromUrl.EndsWith("/"))
                {
                    record.RedirectFromUrl = record.RedirectFromUrl.RemoveCharsFromEnd(1);                     //remove traling slash JC 20140423
                }

                if (record.RedirectToUrl == null)
                {
                    record.RedirectToUrl = "";
                }


                Validate(record);
                if (ModelState.IsValid)
                {
                    Save(record, record.IsNewRecord);
                    Web.InfoMessage = "Url Redirect " + record.GetName() + " saved.";
                }
            } catch (Exception e) {
                ModelState.AddModelError("Record", e.Message);
            }

            if (!ModelState.IsValid)
            {
                // invalid so redisplay form with validation message(s)
                return(View("UrlRedirectEdit", record));
            }
            else if (Web.Request["SaveAndRefreshButton"] != null)
            {
                return(RedirectToEdit(record.ID));
            }
            else if (Web.Request["DuplicateButton"] != null)
            {
                var newRecord = new Models.UrlRedirect();
                newRecord.UpdateFrom(record);
                newRecord.Save();
                Web.InfoMessage = "Copy of Url Redirect " + record.GetName() + " created. You are now editing the new copy.";
                return(RedirectToEdit(newRecord.ID));
            }
            else
            {
                return(RedirectToReturnPage());
            }
        }
 private void Validate(Models.UrlRedirect record)
 {
     // add any code to check for validity
     //ModelState.AddModelError("Record", "Suchandsuch cannot be whatever.");
 }