我在cshtml视图中有一个元素,并且代码生成随机颜色。无论我尝试什么,我都无法使其发挥作用。使用@符号可以删除颜色属性的突出显示(我认为这是一个指示它不起作用)
@using(//using code for accessing database)
{
//code to make query
Random rnd = new Random();
Color randomColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
//other code
//displaying information
<p style="color: @randomColor">@db.item</p>
}
答案 0 :(得分:0)
您不能只在页面上粘贴Color
。 Color
是一个结构。这不是一个字符串。
您需要将Color
转换为适当的HTML表示形式。有关如何执行此操作的一些建议,请参阅this question,例如:
public static String HexConverter(System.Drawing.Color c)
{
return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}
在变量中包含字符串后,您可以像任何其他字符串一样将其输出到视图中。
<p style="color: @HexConverter(randomColor)">@db.item</p>
答案 1 :(得分:0)
首先,将颜色调用为字符串将返回类似“颜色[A = 255,R = 6,G = 86,B = 171]”的内容,这样就无法使用。
相反,您需要获取十六进制表示或使用RGB声明
现在,假设您正在尝试输出p标记,当您在代码块内时,可以使用@ Html.Raw
@Html.Raw("<p style='color: #" + randomColor.R.ToString("x2") + randomColor.G.ToString("x2") + randomColor.B.ToString("x2") + "'>" + db.item + "</p>");
使用rgb可以这样做:
@Html.Raw("<p style='color: rgb(" + randomColor.R + "," randomColor.G "," + randomColor.B +")'>" + db.item + "</p>");
答案 2 :(得分:0)
您需要将Color转换为实际的十六进制代码,如下所示:
<p style="color:@ColorTranslator.ToHtml(randomColor)">@db.item</p>