2012-11-19 17 views
0

我的目标是创建一系列可点击的按钮,每个按钮都有唯一的图像。目前这些图像以CSS的形式存储为类,并且显示正常 - 我可以通过GImg EGCImg1,GImg EGCImg2等等来调用它们。但是,我希望使这种动态变化,因此我可以设置X个按钮而不是复制/粘贴代码(我讨厌这么做)。以下是我能找到的唯一“有用”资源,但不幸的是,他们的建议对我无效。动态命名aspx中的类

http://forums.asp.net/t/1619813.aspx/1

http://www.codeproject.com/Articles/14033/Dynamic-CSS-Styling-in-ASP-NET-A-Flexible-Approach

所以基本上下面的代码,当我手动设置{0}将很好地工作。如果我设置了这个值,他们甚至可以正确地列出来 - 只需要全部使用相同的图像。

只有<%string.Format(“GImg EGCImg {0}”,i); %>已损坏。

<% for (int i = 0; i < 3; i++){ %> 
    <li> 
    <label class="baseTemplate"> 
     <b> 
      <%=Html.RadioButtonFor(x => x.Input.MailTemplate, i)%> 
     </b><span class="<% string.Format("GImg EGCImg{0}", i); %>"><span class="CheckMark"/> 
      </span> 
     </label> 
    </li><% } %> 

任何和所有的建议,欢迎, 谢谢!

+1

“只有' <%string.Format(“GImg EGCImg {0}”,i);%>'已损坏。“ - 破了怎么样? – millimoose

+0

尝试'<%= string.Format(...)%>' – millimoose

+0

您是否需要Response.Write来打印格式化的字符串? – Naner

回答

1

你错过了=<%

此外,您还可以执行以下操作:

<span class="GImg EGCImg<%= i.ToString() %>"><span class="CheckMark"/></span> 

而不是使用String.Format方法,只是追加了i在你的课程结束后。开销也少一点。

=好像是说Response.Write

+0

正如我在评论中所说的,<%=不适合我,其他三种变体都不会,都会说“表达预期”但是!你的第二点工作!谢谢!我之前尝试过,但我没有ToString(),这很有道理。 –

+0

非常好:)很高兴帮助 – Darren

1

一个选择是使用内联css,所以不要使用class =“classname”,你可以使用style =“background:red;”。这是最简单的方法,不需要更改太多的代码。您也可以在头部生成动态CSS,或将外部链接到生成的CSS文件。

+0

你能举一个小例子吗?我有一个外部的css文件 - 所以我可以使用它,但我不完全明白你的意思。谢谢! –

+0

'Nevermind',因为我从不同的用户那里得到了答案 - 尽管如此,也可以为其他人回答:) –

+0

我想我误解了你的意思问题:我以为你试图避免在你的样式表中创建新的CSS类,每次你想添加一个按钮时,很高兴你找到答案=) – AlbertVo

0

您可以使用Attributes.Add和Attributes.Remove

aspx文件

<span id="YourContainer" runat="server">Report Type</span> 

C#代码背后

YourContainer.Attributes.Add("class", "active"); 
YourContainer.Attributes.Remove("class");