0

asp: LinkBut​​tonハイパーリンクを制御するCSSがいくつかあり、MasterPageが読み込まれるたびに現在のページにWebControlのCssClassプロパティを設定する方法を知りたいです。

MasterPage上のこれらのasp:LinkBut​​tonハイパーリンクは、リストに含まれています。

<ul id="menu">
  <li class="sprite">
    <asp:LinkButton ID="linkButton1" runat="server" PostBackUrl="~/linkButton1.aspx">
      <span>link 1</span>
    </asp:LinkButton>
  </li>
  <li class="sprite">
    <asp:LinkButton ID="linkButton2" runat="server" PostBackUrl="~/linkButton2.aspx">
      <span>link 2</span>
    </asp:LinkButton>
  </li>
  <li class="sprite">
    <asp:LinkButton ID="linkButton3" runat="server" PostBackUrl="~/linkButton3.aspx">
      <span>link 3</span>
    </asp:LinkButton>
  </li>
</ul>

MasterPageで、Page_Loadイベントを使用してCssClassを設定しようとしました。

protected void Page_Load(object sender, EventArgs e) {
  if (!IsPostBack) {
    linkButton1.CssClass = "";
    linkButton2.CssClass = "";
    linkButton3.CssClass = "";
    string linkButtonID = Request.RawUrl;
    if (-1 < linkButtonID.IndexOf("linkButton2")) {
      linkButton2.CssClass = "active";
    } else if (-1 < linkButtonID.IndexOf("linkButton3")) {
      linkButton3.CssClass = "active";
    } else {
      linkButton1.CssClass = "active"; // default
    }
  }
}

MyCssClass="active"が設定されていないようです。ページのソースを見ると、LinkBut​​tonコントロールのいずれにもCssClassプロパティが設定されていないことがすぐにわかります。

これは視覚化するのが難しいので、jsFiddleをまとめました。このサイトはASPをサポートしていませんが、私が達成しようとしていることを視覚化するのに役立つ場合があります。

http://jsfiddle.net/jp2code/kZQwC/

アクティブページでCssClassを設定するにはどうすればよいですか?

4

1 に答える 1

1

その時点でのURLにlinkBut​​ton1、 linkBut !IsPostBack​​ton2、またはlinkBut​​ton3が含まれていないのではないかと思います。

を取得してclass assignment code out of the if condition、それらの条件が実行され、クラスを取得しているかどうかを確認します。

変化する

if (!IsPostBack) {
    linkButton1.CssClass = "";
    linkButton2.CssClass = "";
    linkButton3.CssClass = "";
    string linkButtonID = Request.RawUrl;
    if (-1 < linkButtonID.IndexOf("linkButton2")) {
      linkButton2.CssClass = "active";
    } else if (-1 < linkButtonID.IndexOf("linkButton3")) {
      linkButton3.CssClass = "active";
    } else {
      linkButton1.CssClass = "active"; // default
    }
}

linkButton1.CssClass = "";
linkButton2.CssClass = "";
linkButton3.CssClass = "";
string linkButtonID = Request.RawUrl;
if (-1 < linkButtonID.IndexOf("linkButton2")) {
  linkButton2.CssClass = "active";
} else if (-1 < linkButtonID.IndexOf("linkButton3")) {
  linkButton3.CssClass = "active";
} else {
  linkButton1.CssClass = "active"; // default
}
于 2012-08-10T17:56:05.283 に答える