1

私はこのようなユーザーコントロール(.ascx)を持っています:

<% 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>
<% } %>

ここで、HasAccessMediaPlansは、ユーザーコントロールのコードビハインド(.ascx.cs)で定義された変数であり、ページの読み込み時に割り当てられます。

protected Boolean HasAccessMediaPlans = false;

 protected void Page_Load(object sender, EventArgs e) {
            HasAccessMediaPlans      = SessionState.CurrentUser.HasModuleAccess(MediaString + " Plans");
}

私の質問は、usercontrol markup(.ascx)で<%%>に埋め込まれたインラインサーバーコードを回避するにはどうすればよいですか?

4

2 に答える 2

1
<div class="orange-portlet-box" id="dvBox" runat="server">
  <div class="HomeModulePortletTitle">
    <a id="aLink">Plans</a>
  </div>
  <p>Create // Edit // Review</p>
</div>
<div style="clear: both;"></div>

コードビハインド

Boolean HasAccessMediaPlans = false;

protected void Page_Load(object sender, EventArgs e) 
{
  HasAccessMediaPlans = SessionState.CurrentUser.HasModuleAccess(MediaString + "Plans"); 
  dvBox.Visible = HasAccessMediaPlans;
  aLink.HREF = RootPath + "MediaPlanning/Default.aspx";
}
于 2012-10-03T19:23:51.097 に答える
1

このコードをサーバー側のコンテナーコントロール(たとえば<div id="wrapper" runat="server">)でラップし、サーバー側で必要な方法でその可視性プロパティを割り当てることができます。

.aspxこれにより、 /.ascxファイルにコードが散らかるのを防ぎ、コードを分離コードファイルに保持します。

于 2012-10-03T18:58:41.373 に答える