3

在 Umbraco 4.11.10 中遇到剃刀宏问题,这真的让我很难过,

问题:

在执行剃刀脚本时,在文本框多行字段中包含 html 元素会“破坏”属性边界。

更多细节:

基本宏有一个文本框多字段,它作为参数传递给剃刀脚本。

对于纯文本,这很有效,但最近的要求需要在不同的点将标签添加到此文本中。

我试过的:

最初我尝试像这样转义html

>sup<1,2>/sup<

这很好用,直到我重新加载节点并重新发布,在查看数据库时,似乎第一次保存宏时,正确的转义 html 包含在宏参数中:

description="(text here)>sup<1,2>/sup<(more text)" ...

当节点重新加载时,呈现的输出是实际的 html 字符(假设在显示在 umbraco 后端之前已对其进行解码)。

<sup>1,2</sup>

重新发布时将“按原样”传递给 Razor 宏。

 description="SINGLE (n=833) <sup>1,2</sup>

然后从第一个 html 标记的末尾输出到宏参数的末尾作为其输出:

<p> ***+ ***vs ***(Should Stop Here)" hideBorder="0" preview="0" /></p>

应该是

blah blah blah + * *vs * (应该停在这里)" hideBorder="0" preview="0" />

问题:

我的问题是,有没有办法在用作剃刀参数时将 html 元素添加到多个文本框,或者在重新加载节点时停止解码。

由于遗留问题和影响,如果可能的话,我宁愿不更改宏/参数,但如果它必须是必须的。

感谢您花时间阅读!

4

2 回答 2

4

我有一个类似的问题,我希望通过将 textMultiLine 作为参数的宏直接将 HTML/Javascript 插入 RTE。

在不逃脱标签的情况下取出标签的解决方案是:

@Html.Raw(HttpUtility.HtmlDecode(Parameter.Code));
于 2014-02-28T00:28:45.897 回答
1

最后,我决定使用 RegEx 的辅助函数来替换自定义 html 元素键,例如 $gt$ for > 和 $lt$ for <。

$lt$span$gt$1,2,3 $lt$/span$gt$

这是一个丑陋的解决方案,但让我不得不恢复到多个 DocTypes(而不是宏)或 RichTextEditor 属性,这也可以解决问题。

希望它可以使某人不必像我一样浪费时间。

于 2013-11-07T11:22:56.993 回答