在资源文件中存储html标记的最佳实践/技巧

时间:2009-10-19 13:49:47

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

我有以下情况:假设我必须以下列格式显示数据。

I am 20 years old。我需要数字20以粗体显示。

我从像这样的资源文件中获取此字符串

string.Format(HttpContext.GetGlobalResourceObject("ResourceFile","Key"),age);

我应该考虑在资源文件中添加标记<b></b>吗?这被认为是“最佳做法”吗?任何人都可以提供有关本地化的有用链接吗?

3 个答案:

答案 0 :(得分:7)

不存储改变资源视觉风格的标签

对于代码/数据/表示分离目的,我建议您不要在资源文件中存储标记。它将使维护更加困难(通过在aspx / ascx文件以及资源中使用标签,甚至可能在数据库中使用标签)

您应该遵循关注点分离模式并将事物分开。

Key        Value
"UserAge"  "It seems you are {0} year(s) old."

一些宽松的限制可能会有所帮助
但是当使用一些嵌套标记时,大多数安全要做的事情就是拥有不提供任何样式的标签。在你的情况下,我最多使用<span>标签(因为它是内联样式,这正是你需要的)。 CSS最终会定义它的视觉表现。

Key        Value
"UserAge"  "It seems you are <span>{0}</span> year(s) old."

但你应该理解其含义。这样做可能仍然比没有标签更糟糕。想象一下当您更改表示层时会发生什么。让我们说服务或Windows桌面应用程序。像<span>这样的标签在这种情况下没有任何意义。它们可以省略,但是你为什么要把它们放在第一位呢。

答案 1 :(得分:1)

如果您希望某些部分以粗体或其他方式装饰,您可以将它们存储为资源文件中的Markdown字符串,然后在渲染页面时将Markdown应用于它们。实际上,这个网站使用降价库来取得巨大成功。这样您就不必担心在资源文件中存储HTML了,如果您必须在HTML之外使用它们,那么您的字符串仍然可读。

答案 2 :(得分:0)

通常,您希望保持查看逻辑独立于您的资源,这也不例外。

我会将字符串分成3个部分:粗体部分之前的子字符串,粗体部分本身以及粗体部分之后的子字符串。将第一个和第三个项目放入资源,并根据需要在页面上格式化第二个项目。