что означает # в представлении asp.net mvc - PullRequest
0 голосов
/ 23 сентября 2018

В Asp.net MVC у меня есть представление с .cshtml.Я хочу знать, что означает написание строки между двумя символами хеша, как этот код

#if(actionName()!=null){ if(actionName()=='Start'){#

и что отличается между # и @

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Запись строки между двумя # не имеет внутреннего значения, эта строка в вашем примере написана как есть, потому что она обрабатывается как текст, а не как синтаксис 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'){@, это было бы оценено как выражение бритвы из-за @, и вы получите ошибку, потому чтоэто не допустимое выражение бритвы.

Это не имеет отношения к использованию символа, такого как # или $.Вы просто пишете текст в любой момент (потому что вы на самом деле не пишете бритвенное выражение с @), поэтому все допустимо и будет отображаться как текст как есть.Символ или без символа.

0 голосов
/ 17 января 2019

Ахмед, вам может пригодиться эта ссылка: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if

По ссылке выше ...

# если вместе с #else, #elif, #endif, #define и директива #undef позволяют вам включать или исключать код, основываясь на существовании одного или нескольких символов.Это может быть полезно при компиляции кода для отладочной сборки или при компиляции для конкретной конфигурации.

// C#
/#if DEBUG
    Console.WriteLine("Debug version");
#endif
0 голосов
/ 23 сентября 2018

Если вы добавите # между условием if или текстом в .cshtml, например

   1. #if(1!=2){ <p>True</p> }else{<p>False</p>}#
   2. #Hello#

, это просто отобразит тот же текст в пользовательском интерфейсе (просмотр).

Incase of 1, если вы положите @ в начале, оно станет действительным, если условие внутри cshtml.

@if(1!=2){ <p>True</p> }else{<p>False</p>}      

В asp.net mvc (Razor Engine) для .cshtml, символ @ запускает встроенные выражения, блоки одного оператораи блоки с несколькими утверждениями. Пожалуйста, проверьте ссылку для получения дополнительной информации.

https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c

Редактировать: @Stephen это, очевидно, работает.

Contact.cshtml

@{
ViewBag.Title = "Contact";
}

@if (1 != 2){ <p>True</p> }else{<p>False</p>} 


#Hello#

#if(1!=2){ <p>True</p> }else{<p>False</p>}#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...