我正在研究MVC Web应用程序。我有Razor和JavaScript的页面组合。
剃刀:
@{
ViewBag.Title = "Edit";
string initialImage = "<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>";
}
JavaScript的:
<script type="text/javascript">
$("#Photos").fileinput({
initialPreview: [@initialImage],
我想要的是:
<script type="text/javascript">
$("#Photos").fileinput({
initialPreview: ["<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>"],
我得到的(在源视图中)是:
<script type="text/javascript">
$("#Photos").fileinput({
initialPreview: [<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>],
我尝试了许多HtmlEncode和HtmlDecode的组合(在Razor和JavaScript部分都有),但无法理解。 请指教。谢谢!
答案 0 :(得分:1)
默认情况下,asp.net mvc将对您的字符串进行编码。使用未编码的字符串使用Html.Raw(string):
<script type="text/javascript">
$("#Photos").fileinput({
initialPreview: ["@Html.Raw(initialImage)"],
答案 1 :(得分:1)
Html.Raw在不进行任何html编码的情况下呈现给出的内容, 所以
@Html.Raw(initialImage);
将呈现为
<img src='/Site_Data/BIO/Bio.jpg' title='BIO'>
在你的js中你需要用双qoutes编码它:
<script type="text/javascript">
$("#Photos").fileinput({
initialPreview: ["@Html.Raw(initialImage)"],
但是,当您在其中编码字符时,例如ViewBag.Something = ">";
,原始版本为>.
要回到实际的html,您需要
Html.Raw(HttpUtility.HtmlDecode(EncodedContent));