所以我一直在查看相关问题,但我无法弄清楚为什么我的脚本标记格式错误。
<script language="javascript" type="text/javascript">
var showME = false;
var showSuffix = "";
@if (ViewData["showME"] != null && ViewData["showSuffix"] != null)
{
<text>
showME = @(Convert.ToBoolean(ViewData["showME"]) ? "true" : "false");
showSuffix = '@Html.Raw(Json.Encode(ViewData["showSuffix "]))';
</text>
}
</script>
EDIT! 下面的答案是正确的,但我追踪到这一行的畸形部分。
var videoHelpUrl = @(Url.Action("Index", "Help", new { Id = 46 }));
答案 0 :(得分:1)
如果您尝试使用双{{}},请执行;
@{
if (ViewData["showME"] != null && ViewData["showSuffix"] != null)
{
<text>
showME = @(Convert.ToBoolean(ViewData["showME"]) ? "true" : "false");
showSuffix = '@Html.Raw(Json.Encode(ViewData["showSuffix "]))';
</text>
}
}
看看是否有效。
答案 1 :(得分:1)
试试这个:
<script language="javascript" type="text/javascript">
var videoHelpUrl = '@Url.Action("Index", "Help", new { Id = 46 })';
console.log(videoHelpUrl);
</script>
console.log将输出Url。
注意:请始终牢记Razor视图中的@后面的所有内容都将由Razor引擎处理。这就是为什么你可以用引号括起@ Url.Action(...)。它将首先由Razor引擎处理,然后在执行时由Javascript处理。