Razor语法:内部的代码块,每个都不起作用

时间:2016-02-10 14:05:30

标签: razor

我正在努力制作以下剃须刀片段

<ul>
@foreach (var lang in umbraco.cms.businesslogic.language.Language.GetAllAsList())
{
    var url = Model.Content.Url + "?lang=" + @lang.CultureAlias;

    if (currentCulture.TwoLetterISOLanguageName.Equals(lang.CultureAlias))
    {
        <li class="active"><a href="@url">@lang.FriendlyName</a></li>
    }
    else
    {
        <li><a href="@url">@lang.FriendlyName</a></li>
    }
}

如果我删除了foreach和if之间的变量赋值,如果它工作正常,但是否则我得到一个编译错误(比如razor解析器理解一个}作为标记并尝试渲染它)。 有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

认为问题出在这一行

var url = Model.Content.Url + "?lang=" + @lang.CultureAlias;

由于您已处于“代码”模式

,因此您不需要额外的@

因此,请尝试将@lang.CultureAlias更改为lang.CultureAlias

答案 1 :(得分:1)

你这里有@个太多了:

var url = Model.Content.Url + "?lang=" + @lang.CultureAlias;

应该成为:

var url = Model.Content.Url + "?lang=" + lang.CultureAlias;