В вашем коде Razor, если вам нужно сделать дополнительный шаг, чтобы убедиться, что код включен в вывод как есть и не рассматривается как C#.
Если у вас нет * В теге 1021 * вы можете использовать синтаксис <text></text>
или @:
, чтобы указать Razor не запускать строки (строки) как код C#, а просто рассматривать их как часть вывода. Подробности смотрите здесь: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-3.1#explicit -delimited-transition
Например, результат этого - ничто. Вы назначили переменную c#, которая не используется.
@if (@so.invSiteID == null) { // note: the second @ here is not
// necessary because you are in a c# block
var siteRazor = 0; // << var is a c# keyword and the `if` is a c# block
}
Вместо этого вы можете использовать:
@if (so.invSiteID == null) {
@: var siteRazor = 0;
}
// ... rest of code
Мое предложение будет минимизировать количество кода C# как можно больше в ваших файлах Razor, и всегда думайте о том, какой вывод вы создаете. (Просмотрите исходный код в браузере, чтобы увидеть фактический вывод, если это необходимо.)
Тем не менее, вы можете значительно упростить свой код, если используете оператор объединения нулей.
function create() {
var site = @(so.invSiteId ?? 0);
}