Условная ссылка в Razor - PullRequest
       6

Условная ссылка в Razor

4 голосов
/ 28 февраля 2011

У меня есть несколько вкладок, и я хочу сказать: «если они в данный момент находятся на странице, на которую ссылается эта вкладка, сделайте это пролётом. В противном случае сделайте ссылку».В псевдо-бритве это будет выглядеть так:

@if(CurrentlyOnThisPage) {
  <span>
} else {
  <a>
}
   Tab Content
@if(CurrentlyOnThisPage){
  </span>
} else {
  </a>
}

Razor (правильно) отмечает, что я не закрываю свои начальные теги, и поэтому имеет проблемы с синтаксическим анализом этого синтаксиса.Если бы содержимое вкладки было маленьким, я мог бы использовать Html.ActionLink, но у меня есть несколько строк материала, и я хотел бы сохранить преимущества HTML-редактора, а не помещать все это в строку.Есть ли способ сделать это?

Ответы [ 3 ]

8 голосов
/ 28 февраля 2011

Вы можете написать теги в виде буквального текста, чтобы Razor не мог их проанализировать:

@:<span>
4 голосов
/ 28 февраля 2011

Как насчет этого?

@{
    var linkOrSpan= CurrentlyOnThisPage ? "span" : "a";
}

<@linkOrSpan><text>Tab Content</text></@linkOrSpan>

Нет ошибок при закрытии тегов с этим.

Их тоже выглядит чище.

НТН

3 голосов
/ 28 февраля 2011

Или просто напишите это явно:

@if(CurrentlyOnThisPage)
{
  <span>tabcontent</span>
} else {
  <a>tabcontent</a>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...