Razor @if inside <script> is rejected by VS11

独自空忆成欢 提交于 2019-11-29 06:37:07

It's a little tricky to mix JavaScript with Razor. Personally, I find it easier to always separate these two guys by using either Razor @function or Razor custom @helper.

Here's a simple example:

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

I noticed strange behavior of the syntax highlighter too. This is not really an answer but:

  • I try staying away from mixing model data into javascript. Although powerfull it is a bit spaghetti-like.
  • Also I try to have as little as possible tags in the html. I use js includes and jQuery $(document).ready(function () ... functions inside those.
  • There you can extract the JSON data from the data attributes and base javascript decisions on those.

(Wanted to write this as a comment but didn't find the way to do that, sorry for the debump)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!