Как сделать значение javascript равным значению, которое я получаю из кода Razor - PullRequest
0 голосов
/ 04 марта 2020

Я новичок в MVC и не уверен, возможно ли это вообще, но я хочу знать, как сделать так, чтобы переменная внутри моей функции javscript была равна значению, которое я получаю из кода бритвы. .

Вот мой код

function create() {

        var site

        @if (@so.invSiteID == null) {
            var siteRazor = 0;
        }
        else {
            var siteRazor = @so.invSiteID;            
        }
}

Так могу ли я сделать мой "siteRazor" равным моей переменной "site"?

Также я попытался this

if (@so.invSiteID == null) {
            site = 0;
        }
        else {
            site = @so.invSiteID;            
        }

Но это не имело значения, было ли утверждение истинным или ложным, оно всегда проходило через оба. Если бы я мог получить краткое объяснение того, почему это не сработало, это было бы замечательно

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

В вашем коде 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);
}
0 голосов
/ 04 марта 2020

Создайте скрытое поле и присвойте ему значение вашей переменной:

@Html.Hidden("siteId", @myvariable)

Затем в JS вы можете указать значение скрытого поля:

var siteIdVal = document.getElementById("siteId").value;
...