<script>中的Razor @if被VS11 </script>拒绝

时间:2012-05-05 10:23:16

标签: visual-studio razor syntax-highlighting asp.net-mvc-4

以下标记是否不正确,还是MVC4中Razor引擎中的错误?无论哪种方式,什么是最好的解决方法?

显示 View1.cshtml 的全部内容。它编译得很好,但Intellisense错误突出显示很烦人。 (包含在图像中,以便您了解VS11如何拒绝语法。)

Markup highlighting

不接受@:语法(而不是<text></text>)。

2 个答案:

答案 0 :(得分:5)

将JavaScript与Razor混合起来有点棘手。就个人而言,我发现使用Razor @function或Razor custom @helper来分离这两个人更容易。

这是一个简单的例子:

<script type="text/javascript">
    function btn_clicked() {
        @generateMyJavaScript()
    }
</script>

<a href="javascript:void(0)" onclick='btn_clicked()'>Click on me</a>

@functions {
    private MvcHtmlString generateMyJavaScript()
    {
        string jsBuilder = string.Empty;
        if (true)
            jsBuilder = "alert('Hey!');";
        return MvcHtmlString.Create(jsBuilder);
    }
}

答案 1 :(得分:0)

我也注意到语法荧光笔的奇怪行为。这不是一个真正的答案,但是:

  • 我试着远离将模型数据混合到javascript中。虽然它有点像意大利面条一样强大。
  • 此外,我尝试在html中尽可能少地使用标签。我在那些内部使用js includes和jQuery $(document).ready(function()...函数。
  • 在那里,您可以从数据属性中提取JSON数据,并根据这些数据做出基本的javascript决策。

(想把这个写成评论,但没有找到办法做到这一点,对不起该次辩论)