1

在我切换到测试驱动开发之后,我最近开始构建自己的视图,以提高代码的质量和可维护性。

这很有帮助,编译器在我的观点中发现了一些缺陷,比如已重命名的变量或其他类似的东西。

然而,现在,当我构建我的解决方案时,我看到了一些误报。这是一些以前在运行时运行良好但现在无法编译的代码示例:

<script type="text/javascript">
var url = null;

@{
    Html.Raw("url = 'doesnt work';");
}

url = "@Url.Action("DoesNotWorkEither")";

</script>

请记住,当我在服务器上执行它而不首先构建视图时,它实际上会运行!

收到的错误

  • 代码中的字符无效@{

  • 预期的 ';' 在代码url = "@Url.Action("DoesNotWorkEither")";

我该如何解决这些错误?

更新 1

应该注意的是,忽略这个错误对我来说不是一个选择。你看,它甚至不能构建(因为我启用了视图的构建)。这意味着它也将无法在我的构建服务器上构建,我已经在其中进行了签入(不允许在构建和运行测试之前提交签入)。

更新 2

正如在对答案的评论中向我解释的那样,这显然只是一个可以忽略的 Visual Studio 解析器错误。构建服务器实际上也会构建视图并告诉您视图中是否存在具体错误,但会忽略误报。

4

1 回答 1

3

这些错误来自 Visual Studio 的 Javascript 解析器,它不了解 Razor。
它们与构建系统无关。

您可以放心地忽略它们。

您可以使用注释和字符串文字从 Javascript 解析器中隐藏 Razor 代码,如下所示:(未经测试)

<script type="text/javascript">
var url = null;

/*@{ 
    Html.Raw(" *"+"/ url = 'doesnt work'; /*");
} */

url = '@Url.Action("DoesNotWorkEither")';

</script>

更好的解决方法是创建扩展方法,<script>使用您需要的数据发出标签,然后在<script>.

于 2012-05-03T13:43:08.903 回答