You can use SiteMap and Menu control combination for role based menu..
File: web.sitemap
="1.0″ encoding="
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0″ >
<siteMapNode roles="*">
<siteMapNode url="Home.aspx" title="Home" description=""/>
<siteMapNode title="Organise" roles="Admin,Site" description="">
<siteMapNode url="Organise/contacts.aspx" title="Contacts" description=""/>
<siteMapNode title="Reports" roles="*" description="">
<siteMapNode url="Reports/Details.aspx" title="Custom" description=""/>
</siteMapNode>
</siteMapNode>
</siteMap>
Register Sitemap in Web.Config
<siteMap enabled="true">
<providers>
<clear/>
<add siteMapFile="Web.sitemap" name="AspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true"/>
</providers>
</siteMap>
At last add Menu and Sitemap DataSource on Master Page
<asp:SiteMapDataSource runat=""server"" ID="MenuSiteMapdata" ShowStartingNode="false" />
<asp:Menu runat=""server"" ID="MainMenu" Orientation="Horizontal" DataSourceID="MenuSiteMapdata">
<LevelMenuItemStyles>
<asp:MenuItemStyle />
<asp:MenuItemStyle />
<asp:MenuItemStyle />
</LevelMenuItemStyles>
</asp:Menu>