对于一个项目,我使用jqote进行模板化,使用MVC 4和Razor生成的
JavaScript和HTML.
请查看HTML和Razor中的以下代码:
Some html
@{string id = "";}
@if(true)
{
@Html.Raw(@"")
}
@if(true)
{
}
@Html.Raw(@"")
输出是这样的:
现在,问题在于下的第二个选择.人们会期望Html.Raw在这里踢,但不知何故它没有.或者Razor想要HtmlEncode那里有什么.
问题是:有没有人知道为什么?这是一个bug还是设计?
没有脚本标签就可以了.但是我们需要脚本标签,因为我们需要在JavaScript中使用模板.
硬编码它可以工作,但我们需要使用变量,因为这并不总是一个模板.
没有@if它可以工作,但它就在那里,我们需要它.
解决方法
这些行提供类似的良好输出:
@if(true)
{
}
@if(true)
{
}
@if(true)
{
}
我们打算这样做:
@{string id = @"id=""""";}
@if(true)
{
}
…尽可能保持标记的完整性.