【问题标题】:c# strings as html attributesc#字符串作为html属性
【发布时间】:2017-07-02 23:07:57
【问题描述】:

我正在尝试让我的剃刀视图更具动态性。 我正在尝试为表格中的 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>

我怎样才能让它不将 " 解析为实体?(它不会让我输入 & quot 而不把它变成实际的 ")


更新:

这仍然是处理 HTML 属性的好方法。但是在这种情况下,它是一个样式标签,评论的人是对的;最好用css而不是逻辑来做。如果您有这个确切的问题(样式属性),下面的堆栈帖子将为您提供帮助。否则,Html.Raw() 是好的。

Equal sized table cells to fill entire width of holding table

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

【问题讨论】:

  • 把html留给html,把代码留给代码:&lt;td class="table--td" style="width: @width"&gt;Some Value&lt;/td&gt;
  • 我最初是这样做的,但这是我想要的元素上唯一无法在 css 中完成的样式。我认为这会使标记更清晰。

标签: c# html string razor


【解决方案1】:

查看@Html.Raw()

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

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

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

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

【讨论】:

  • 你是对的,内联是不好的做法,但我将它留给这个例外。(除了显示:无)我对所有其他样式都使用 CSS / Sass,但这需要是动态的并且它是当我可以通过快速数学获得百分比时,完成它会容易得多。我更喜欢将逻辑与视图完全分开。我将需要研究制作 html 助手。我是 c# 的新手,这将是一个非常酷的部分来理解。谢谢!
  • This 是一个非常快速的参考,可帮助您入门
【解决方案2】:

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

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

代替:

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

【讨论】:

  • 完美!感谢您的快速回复。如果时间允许,我会接受这个作为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2014-11-18
  • 2014-05-14
  • 2022-01-27
  • 1970-01-01
相关资源
最近更新 更多