在Javascript中格式化Razor ViewData

时间:2013-03-13 16:53:23

标签: javascript razor viewdata

所以我一直在查看相关问题,但我无法弄清楚为什么我的脚本标记格式错误。

<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 }));

2 个答案:

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