I have a usercontrol (.ascx) like this:
<% if (HasAccessMediaPlans) { iPortletCounter++; %>
<div class="orange-portlet-box">
<div class="HomeModulePortletTitle"><a href="<%= (RawHtml)RootPath %>MediaPlanning/Default.aspx">Plans</a></div>
<p>Create // Edit // Review</p>
</div>
<div style="clear: both;"></div>
<% } %>
where HasAccessMediaPlans is a variable defined in user control’s code behind(.ascx.cs) and it’s assigned in page load.
protected Boolean HasAccessMediaPlans = false;
protected void Page_Load(object sender, EventArgs e) {
HasAccessMediaPlans = SessionState.CurrentUser.HasModuleAccess(MediaString + " Plans");
}
My question is: how can I avoid inline server code embeded in <% %> at my usercontrol markup(.ascx) ?
You can wrap this piece of code with a server side container control (say
<div id="wrapper" runat="server">) and on the server side assign its visibility properties in the wanted manner.This avoids littering your
.aspx/.ascxfiles with code and keeps code in the code-behind file.