private static SiteMapNode ToModel( SiteMapNodeEditInput input )
 {
     return Mapper.Map<SiteMapNodeEditInput, SiteMapNode>( input );
 }
 private SiteMapNodeEditDisplay ToEditDisplay( SiteMapNodeEditInput input )
 {
     return Mapper.Map<SiteMapNodeEditInput, SiteMapNodeEditDisplay>( input );
 }
        public virtual ActionResult Edit( SiteMapNodeEditInput input )
        {
            if ( ModelState.IsValid )
            {
                try
                {
                    SiteMapNode model = ToModel( input );

                    if ( input.PreviousSiblingId.HasValue )
                    {
                        SiteMapNodeService.UpdateAndPositionAfterNode( model, input.PreviousSiblingId.Value );
                    }
                    else
                    {
                        SiteMapNodeService.UpdateAndPositionUnderNode( model, input.ParentId );
                    }

                    return this.RedirectToAction( x => x.Index() );
                }
                catch /*( Exception ex )*/
                {
                    // todo log and display error and remove throw
                    throw;
                }
            }

            SiteMapNodeEditDisplay display = ToEditDisplay( input );
            PopulateEditDisplay( display );
            return View( display );
        }