在元素的内联CSS中使用C#变量? (MVC)

时间:2017-06-30 22:40:59

标签: c# html css asp.net-mvc

我在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>
}

3 个答案:

答案 0 :(得分:0)

您不能只在页面上粘贴ColorColor是一个结构。这不是一个字符串。

您需要将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>