2016-02-10 4 views
0

Я изо всех сил сделать следующий бритву сниппет рабочий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> 
    } 
} 

Если удалить назначение переменной между Еогеасп а если он работает нормально, но в противном случае я получаю ошибку компиляции (например, анализатор бритвы понимает a) как разметку и пытается ее отобразить). Любой способ решить эту проблему?

ответ

3

Подумайте вопрос в этой строке

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

Вам не нужно дополнительные @, так как вы уже находитесь в режиме 'code'

Так попробуйте изменить @lang.CultureAlias к lang.CultureAlias

+0

Это была проблема действительно ... thx – CodeClimber

+1

Отлично, рад, что это решило! –

1

У вас слишком много @ s здесь:

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

должны стать:

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

Это была проблема на самом деле ... THx – CodeClimber

+0

Ну, если это помогло вам решить эту проблему вы встречая вы могли бы рассмотреть пометив его как ответ, особенно, когда этот ответ предоставляется 2 минуты перед ответом, который вы на самом деле отметили как ответ. –

+0

Они оба одинаковый ответ, и тот был сверху – CodeClimber