Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC3 Razor-带有嵌套服务器ifs的Javascript语句_Javascript_Asp.net Mvc 3_Razor - Fatal编程技术网

MVC3 Razor-带有嵌套服务器ifs的Javascript语句

MVC3 Razor-带有嵌套服务器ifs的Javascript语句,javascript,asp.net-mvc-3,razor,Javascript,Asp.net Mvc 3,Razor,为什么razor模板引擎不喜欢: @if (Model.ActionComplete) { <script type="text/javascript"> @if (Model.Message.IsString()) { } </script> } Razor不喜欢脚本块中的标记,因此它会导致解析问题。如果你真的想看到代码,那就忽略警告 对于傻笑,请将“script”重命名为textarea,看看它是否有效 您的语法看起来不错。您能

为什么razor模板引擎不喜欢:

@if (Model.ActionComplete) {
  <script type="text/javascript">

      @if (Model.Message.IsString()) {

      }

  </script>
}

Razor不喜欢脚本块中的标记,因此它会导致解析问题。如果你真的想看到代码,那就忽略警告


对于傻笑,请将“script”重命名为textarea,看看它是否有效

您的语法看起来不错。您能确认页面在运行时是否产生了您期望的结果吗?Razor v1的IntelliSense引擎仍然有一些怪癖,特别是如果在HTML中有JavaScript的C#内部。

因为关注点的分离。为什么要根据服务器端信息编译javascript?JavaScript用于增强体验,服务器端信息被注入HTML。该视图将模型转换为HTML。JavaScript应该在一个独立的外部文件中,远离您的服务器。这不是我所要求的,请坚持回答,我没有要求为我的视图添加视图逻辑。@BobTodd:Raynos试图帮助您,不需要防御。IMHO拥有12年的web开发经验,这是web开发中最糟糕的做法之一,在我们的商店是禁止的。为了避免这种容易出错的语言混合,我会让服务器生成一个JSON对象,供脚本使用。这样,您的数据和脚本就分开了。@BobtodRazor不喜欢这样,因为当与JavaScript混合时,语法非常松散和模糊。C#和HTML之间的语法差异很简单。弄清楚内联C#的哪一部分是C#而不是JavaScript是一场噩梦。再一次,用标准的公认实践设计你的应用程序会使这个问题消失。有时(特别是在jQueryUI和ajax集成中),在javascript中包含@Model.X才有意义。当然,这是非常有限的一点,但它仍然非常普遍。也许你只是在谈论“逻辑”嵌入跨语言的情况?另外-razor语法突出显示应该很容易解决试图找出语言差异的问题-这就是为什么首先开发突出显示:)如果我想要一个带有指向javascript ui的链接的网格,用于/Controller/Action/Index/XX以显示
@if (Model.ActionComplete) {
  <script type="text/javascript">
    $(document).ready(function () {
      $("#user-form").slideUp();
      @if (Model.Message.IsString()) {
        @:showMessageBar("@(Model.Message)");
      }
    });
  </script>
}