混合JavaScript和剃刀语法(Mixing JavaScript and Razor synt

2019-10-18 10:21发布

我一直在寻找如何剃刀和JavaScript混合在一起。 我发现是这样的:

<script type="text/javascript">
var currentUser = null;
@if (User.Identity.IsAuthenticated) {
    <text>
        currentUser = '@User.Identity.Name';
    </text>
}
</script>

为什么称为变量currentUser包围<text></text>标记? 是什么意思<text>标记? 如果我们忽略的文本标签,然后任何错误发生的呢?

Answer 1:

那么,这是剃刀是如何工作的。 它采用支架和标签开始/结束从生成的HTML differenciate C#代码

当你打开一个支架,它认为它直到代码:

  • 对应的右括号是encounterd
  • 标签被打开。

然后,打开的标签将被视为HTML直到@或遇到correspoding关闭标签。 有时候,你想从C#切换到HTML(或爵士),但你不希望添加标签......那么对你特别的标签ID存在。 它不会被渲染,只是在这里要告诉剃刀切换ROM C#中生成的输出



Answer 2:

究其原因, <text>…</text>标签是解决中出现的调音两种语言一起是发生在许多情况下,语义相同的结果含糊不清的问题。

如果你到剃刀语法的C#中指定动态Java脚本逻辑if语句,和你有Java脚本,如果在这些块语句,如何将它区分两者之间的范围内?

问题是:它不能; 赔率是,程序员可以没有。 该<text>…</text>标签是一种特殊的剃刀块(内C#块只)风格的转义,说:这肯定是(可能)不C#代码,在此块。

事情变得有点冒险,当你意识到,你可以添加内的另一个逃生<text>…</text>块。 任何事情一样,虽然你会谨慎使用。 如果您遇到了很大的麻烦混合两种,不能找出其中添加文本块,赔率是你不应该使用它(在生产中),直到你更好地理解它。



文章来源: Mixing JavaScript and Razor syntax