razor 写入html标记,如何使MVC 4 Razor Html.Raw在脚本标记内的HTML中进行赋值

博客探讨了在使用MVC4和Razor时遇到的一个问题,即在特定情况下Html.Raw未按预期工作,导致JavaScript模板化过程中出现编码问题。作者发现去除@if块或更改代码结构可以解决此问题,并寻求社区的帮助理解这一行为是bug还是设计。解决方案涉及到在 Razor 代码中调整字符串的表示方式以保持HTML标记的完整性。
摘要由CSDN通过智能技术生成

对于一个项目,我使用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)

{

}

…尽可能保持标记的完整性.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值