2013-03-13 93 views
1

所以我一直在寻找相关的问题,我无法弄清楚为什么我的脚本标签格式不正确。在Javascript中格式化剃须刀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> 

编辑! 下面的答案是正确的,但我追查到这条线的格式不正确的部分。

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

回答

1

试试这个:

<script language="javascript" type="text/javascript"> 
    var videoHelpUrl = '@Url.Action("Index", "Help", new { Id = 46 })'; 
    console.log(videoHelpUrl); 
</script> 

的console.log将输出的URL。

注意:请始终记住,剃刀视图中@后的所有内容都将由Razor引擎处理。这就是为什么你可以使用引号围绕@ Url.Action(...)。它将在执行时由Razor引擎首先处理,然后由Javascript处理。

+0

这是引号,绝对没有注意到他们错过了。 – Adam 2013-03-13 19:21:53

1

如果您尝试使用双{{}}中;

@{ 

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

} 

看看是否有效。

+0

这是正确的,我的问题是错的。我的问题在于这条线..想法? var videoHelpUrl = @(Url.Action(“Index”,“Help”,new {Id = 46})); – Adam 2013-03-13 18:58:47

+0

然后给我一些票! :P :) – 2013-03-13 22:05:13