1

変更可能なプロパティを持つユーザー コントロールを作成しています

HTML (.aspx) があります。

<div>
    <ul>
        <li id="li_id" runat="server" class="myStyle" visible="false"></li>
    </ul>
</div>

(私の最初のliは、もう一方が動的に追加され、少なくとも1つの参照cssクラスがあることを確認したいというfalseです)

私の分離コード:

for (int i = 0; i < fotos.Count(); i++)
{
    if (File.Exists(Server.MapPath((fotos[i]))))
    {
        content_slider_inside.InnerHtml += @"<li id='img" + i.ToString() + "'><IMG SRC='" + fotos[i] + "' HEIGHT='490PX' /></li>";
        navigation.InnerHtml += "<li class='myStyle' runat='server'><a href='#img" + (i+1).ToString() + "'>" + (i+1).ToString() + "</a></li>";
    }
}

私の CSS (.css)

.myStyle
{
    /*empty*/
}

ID コードを使用せずにスタイル プロパティを追加するにはどうすればよいですか? (それはdinicamenteで生成されるため)例:

myStyle["background-color"]="red";

生成されたすべての動的に変更する li css プロパティ

javascriptやjqueryで解決することに興味はありません

どうもありがとうございます

4

3 に答える 3

1

"class" 属性と CSS を使用すると、要素のスタイルを設定できます。「動的に」何をしようとしているのかは明確ではありませんが、単に CSS を変更するだけで十分かもしれません (CSS のクラスについて言及することが唯一の理由である場合、目に見えない要素は実際には必要ありません)。

.myStyle
{
    background-color:"red";
}

個別にスタイルを設定したい場合は、HTML で直接インライン化できます。

navigation.InnerHtml += "<li style='background-color:red;' ...

注: InnerHtml プロパティを使用する代わりに、コントロール ツリーを構築する方が簡単です。runat='server'InnerHtml プロパティを使用する場合は値がないため、少なくとも指定しないでください。

于 2012-05-29T16:42:47.077 に答える
0

私の問題に対する2つの答え:

一般的なHTMLコントロールを生成するユーザーAlexeiLevenkovが述べたようにHtmlGenericControl

for (int i = 0; i < fotos.Count(); i++)
{
    if (File.Exists(Server.MapPath((fotos[i]))))
    {
        content_slider_inside.InnerHtml += @"<li id='img" + (i + 1).ToString() + "'><IMG SRC='" + fotos[i] + "' HEIGHT='490PX' /></li>";
        //navigation.InnerHtml += "<li id='item" + (i+1).ToString() + "' runat='server' class='menu_item'><a href='#img" + (i+1).ToString() + "'>" + (i+1).ToString() + "</a></li>";

        HtmlGenericControl a = new HtmlGenericControl("a");
        a.Attributes["href"] = "#img" + (i+1).ToString();
        a.InnerHtml = (i + 1).ToString();

        HtmlGenericControl c = new HtmlGenericControl("li");
        c.ID = "item" + (i+1).ToString();
        c.Attributes["runat"] = "server";
        c.Attributes["class"] = "menu_item";
        c.Controls.Add(a);

        navigation.Controls.Add(c);

        id_imgs.Add("img" + (i+1).ToString());
        id_items.Add("item" + (i+1).ToString());
    }
}

それから私は彼の財産を通して彼らのスタイルに手動でアクセスすることができます

foreach(string i in id_items)
{
    HtmlGenericControl liItem = (HtmlGenericControl)navigation.FindControl(i);
    if (liItem != null)
    {
        if (menu_Item_Fondo != null)
            liItem.Style["background-color"] = menu_Item_Fondo;
        if (menu_Item_Hover_Fondo != null)
        {
            StringBuilder style = new StringBuilder();
            style.AppendLine(".navigation li a:hover { ");
            style.AppendLine(String.Format(" color: {0};", menu_Item_Hover_TextColor));
            style.AppendLine(String.Format(" background-color: {0};", menu_Item_Hover_Fondo));
            style.AppendLine("} ");
            style_menu_item.InnerText = style.ToString();
        }
    }
}

ホバーを動的に使用するには、1つのラベルスタイルを追加します

<div>
    <style id="style_menu_item" runat="server" class="class_style"></style>
    <ul>
        <li id="li_id" runat="server" class="myStyle" visible="false"></li>
    </ul>
</div>

私は満足しています!

于 2012-05-29T20:02:27.100 に答える
0

これを行うには、多種多様な CSS セレクターを使用できますhttp://www.w3.org/TR/CSS2/selector.html

于 2012-05-29T16:36:15.503 に答える