Запись строки между двумя # не имеет внутреннего значения, эта строка в вашем примере написана как есть, потому что она обрабатывается как текст, а не как синтаксис C # / Razor.Это не из-за использования #, а из-за того, что вы не заключаете свой код C # в любой допустимый синтаксис бритвы.
Вы не используете блок бритвы:
@
{
//Everything written inside the razor block is evaluated as C# code. You can
have multiple lines inside this bock
}
Вы не используете встроенную инструкцию бритвы:
@//C# syntax
, где вы можете написать встроенный синтаксис C #, который будет оцениваться в вашем коде.Обычно, если вы пишете что-то вроде
@if(CONDITION)
{
}
@foreach(var x in COLLECTION)
{
}
, вы получаете возможность написать несколько строк C # в боковом блоке без необходимости определять больший блок бритвы.См. MSDN
Поэтому ответить на ваш вопрос # в вашем примере не имеет никакого значения, связанного с MVC / Razor / C #, поскольку он будет отображаться как текст на вашей странице, как он был написан.
#if(actionName()!=null){ if(actionName()=='Start'){#
это так же, как если бы у вас не было никаких других знаков, кроме @.Так что, если бы у вас было
$if(actionName()!=null){ if(actionName()=='Start'){$
, это было бы записано как $if(actionName()!=null){ if(actionName()=='Start'){$
текст на последней странице.Сначала можно было бы написать #if(actionName()!=null){ if(actionName()=='Start'){#
текст на последней странице.
Теперь, если бы у вас было @if(actionName()!=null){ if(actionName()=='Start'){@
, это было бы оценено как выражение бритвы из-за @
, и вы получите ошибку, потому чтоэто не допустимое выражение бритвы.
Это не имеет отношения к использованию символа, такого как # или $.Вы просто пишете текст в любой момент (потому что вы на самом деле не пишете бритвенное выражение с @
), поэтому все допустимо и будет отображаться как текст как есть.Символ или без символа.