在Javascript中格式化Razor ViewData

Formatting Razor ViewData in Javascript

本文关键字:Razor ViewData 格式化 Javascript      更新时间:2023-09-26

所以我一直在看相关的问题,我不能弄清楚为什么我的脚本标签是畸形的。

<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>

编辑!下面的答案是正确的,但我追踪到这一行的畸形部分。

var videoHelpUrl = @(Url.Action("Index", "Help", new { Id = 46 }));

试试这个:

<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处理。

如果您尝试使用double{{}},如;

@{
    if (ViewData["showME"] != null && ViewData["showSuffix"] != null)
    {
        <text>
        showME = @(Convert.ToBoolean(ViewData["showME"]) ? "true" : "false");
        showSuffix = '@Html.Raw(Json.Encode(ViewData["showSuffix "]))';        
        </text>
    }
}