在<script type =“text / template”> </script>

时间:2017-07-27 14:24:34

标签: javascript asp.net-mvc templates razor

我试图在过去6小时内解决这个问题,但无法完成。

这里我的Razor视图中有一个模板脚本。

<script type="text/template" id="Blog_Post_Template">   

    {{if DescType == "FULL"}}
            ${FDesc}
    {{/if}}

    {{if DescType == "SORT"}}
            ${SDesc}
    {{/if}}

</script>

现在,我想要的是在这个模板中使用Razor功能。

  

让我们来看看@ Html.Raw(),我想在$ {FDesc}和$ {SDesc}中使用@ Html.Raw()。

我尝试了很多转义序列,比如,

@Html.Raw("'${FDesc}'")
@Html.Raw("\'${FDesc}\'")

并提供更多解决方案,但我在我开始时就出现了。

输入就像是一个带有html参数的简单文字

<p> Test this </p>
  

输出将是 html

感谢,如果有人可以解决它..

4 个答案:

答案 0 :(得分:1)

您似乎并不了解HTTP的客户端 - 服务器性质的影响。 Razor代码在服务器端运行,而您的JavaScript /模板代码将在客户端运行,服务器已完成其工作并返回响应。因此,@Html.Raw("'${FDesc}'")之类的内容将输出'${FDesc}',而不是${FDesc} 如果您需要确保打印该模板变量而不进行HTML转义,那么您需要依赖JavaScript模板库中的功能,而不是Razor。

答案 1 :(得分:0)

不完全确定服务器和客户端是什么,但是我可能不熟悉你正在使用的模板,但是服务器端评估变量然后渲染客户端没有可用的元素可以使用{{1元素:

<text></text>

也许这会有所帮助?

答案 2 :(得分:0)

最后,在R&amp; D 3天后,我找到了解决方案。

顺便说一句,我们不能使用razor模板作为@chris说,但有另类选择 它非常简单。

答案是模板中的 Html 标记,请参阅下面的示例。

  

{{ html 价值}}

我的完整代码现在看起来像,

<script type="text/template" id="Blog_Post_Template">   

    {{if DescType == "FULL"}}
          {{html FDesc}} // which will now give me pure html
    {{/if}}

    {{if DescType == "SORT"}}
          {{html SDesc}}
    {{/if}}

</script>

答案 3 :(得分:0)

将模板包装在div等html元素中

<script type="text/template" id="Blog_Post_Template">   
<div>
    {{if DescType == "FULL"}}
            ${FDesc}
    {{/if}}

    {{if DescType == "SORT"}}
            ${SDesc}
    {{/if}}
</div>
</script>