Смешивание текста и функций внутри if/else с помощью MVC Razor
У меня есть следующий код внутри частичного представления:
@if (Request.IsAuthenticated)
{
Hello, @Html.ActionLink(User.Identity.Name, "ChangePassword", "Account") | Html.ActionLink("Log off", "LogOff", "Account")
}
else
{
@Html.ActionLink("Log in", "Login", "Account")
}
Ожидаемый результат (с соответствующими ссылками на действия):
- Если вошел в систему: Hello Jim | Выход из системы
- Если вы не авторизованы: Войдите в систему
Однако это приводит к ошибкам:
- В VS, в слове "Hello" есть ошибка: "Не удается разрешить символ" Hello "и" & # "имеет" Expression expected "
- В браузере я получаю "CS1040: директивы препроцессора должны отображаться как первый символ без пробелов в строке"
Если я положил <p>...</p>
вокруг строки, начинающейся с "Hello", ошибка исчезнет.
Существует, очевидно, синтаксическая ошибка с моими вызовами смешивания на @Html
и текст в пределах одной строки. Каков правильный способ сделать это?
Ответы
Ответ 1
Предполагается, что содержимое кодового блока ({ ... }
) будет кодом, а не разметкой.
Если вы хотите поместить текст непосредственно в блок кода, у вас есть три варианта:
- Оберните его в любой тег HTML
- Оберните его в специальный тег Razor
<text>
, который просто отобразит текст без тега
- Подготовьте строку с помощью
@:
, которая эквивалентна
Смотрите сообщение в блоге SottGu.