2017-02-14 67 views
4

我想让我的剃刀视图更有活力一点。 我想在表中为TD设置一个内联样式。c#字符串作为html属性

我所做的字符串:

@{ 
    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> 

我将如何得到它不解析“的实体(它不会?让我没有使它成为一个实际的类型& QUOT“)


更新:

这是仍然是一个很好的方法来做HTML atrributes。然而在这个例子中,它是一个风格标签,人们评论是正确的;最好在css而不是逻辑上做。如果你有这个确切的问题(风格属性),下面的堆栈文章将帮助你。否则,Html.Raw()很好。

Equal sized table cells to fill entire width of holding table

该链接会解决这个问题,如果你不需要担心IE8及以下。否则,你仍然需要在你的CSS中对宽度百分比进行硬编码。

+5

将html留给html代码来代码:Some Value' – LocEngineer

+0

我原来是这么做的,但这是我唯一想要的样式在我的元素,不能在CSS中完成。我认为这会做出更清晰的标记。 – Christian4423

回答

8

你可以使用@Html.Raw因为@功能将HTML编码输出:代替

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

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

完美!感谢您的快速响应。如果时间允许,我会接受这个答案。 – Christian4423

2

查找到@Html.Raw()

你可以做这样的事情有什么您目前有:

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

我可能会考虑更好的方式来生成字符串,虽然。您可以创建自己的Html帮助程序,该帮助程序将您的样式和内容的参数,然后输出到页面。这样做的好处是你的代码在一个地方(DRY)。

另一件需要考虑的事情是你正在使用内联样式。你真的没有办法利用CSS的力量来实现你想要的东西吗?

+0

你说得对,Inline是不好的做法,但是我把它留给了这个例外(除了display:none),我对所有其他样式使用CSS/Sass,但这需要是动态的,并且它更容易实现我可以用快速的数学得到百分比。我宁愿将逻辑与视图完全分开。我将需要考虑制作HTML助手。我对这个c#结尾很陌生,这将是一个很好理解的部分。谢谢! – Christian4423

+1

[This](http://www.webdevelopmenthelp.net/2014/07/custom-html-helper-in-aspnet-mvc.html)是一个非常快速的参考资料,可帮助您启动您的工作 – maccettura

+1

感谢您分享知识:) 美好的一天! – Christian4423