c#strings为html属性

时间:2017-02-14 15:22:46

标签: c# html string razor

我试图让我的剃刀视图更有活力。 我试图在表格中为TD设置内联样式。

我做了字符串:

@{
    double width = 100 / 5;
    String widthStyleString = String.Format("style=\"width: {0}%;\"", width);
}

当我将其作为纯文本进行测试时,效果非常好。我得到了:

style="width: 20%;"

但是,当我尝试将其放入HTML元素时,我得到了这个:

<td class="table--td" style="&quot;width:" 20%;&quot;="">Some Value</td>

我怎么能让它不解析“作为实体?(它不会让我键入&amp; quot而不将它变成实际的”)

更新

这仍然是进行HTML属性的好方法。然而在这个例子中,它是一个样式标签,人们评论是正确的;最好是用css而不是逻辑来做。如果您有这个问题(样式属性),下面的堆栈帖子将对您有所帮助。否则,Html.Raw()很好。

Equal sized table cells to fill entire width of holding table

如果您不需要担心IE8及以下版本,该链接将解决此问题。否则你仍然需要在css中硬编码宽度百分比。

2 个答案:

答案 0 :(得分:8)

您可以使用@Html.Raw,因为@函数会对输出进行HTML编码:

<td class="table--td" @Html.Raw(widthStyleString)>Some Value</td>

而不是:

<td class="table--td" @widthStyleString>Some Value</td>

答案 1 :(得分:2)

查看@Html.Raw()

你可以用你现有的东西做这样的事情:

<td class="table--td" @Html.Raw(widthStyleString)>Some Value</td>

我可能会研究一种生成字符串的更好方法。你可以创建自己的Html助手,它接受你的风格和你的内容的参数,然后输出到页面。这样做的好处是您的代码在一个地方(DRY)。

要考虑的另一件事是您使用内联样式。你真的没办法利用CSS的力量来实现你想要的吗?