Как мне установить Razor variabele в Javascript? - PullRequest
0 голосов
/ 29 апреля 2019

Я устанавливаю переменные Razor с данными из моего контроллера следующим образом:

@{
    var filterData = ((ShipmentController)this.ViewContext.Controller).GetNoCmrs(new List<int>() { 1 });
}

Я хочу изменить эти данные в зависимости от выбранной опции, которую выбирает пользователь (в пределах выбора).

<script>
    var x;
    function loadShipmentsByCondition() {
        x = document.getElementById("conditionSelect").value;
        if (x === "CMR not received") {
            @filterData = @newData;
        } else if(x === "Not invoiced") {
            console.log("INVOICE");
            @filterData = @otherData;
        }
    }
</script>

Возможно ли это? Или, если нет, как я могу сделать это эффективно? Я использую MVC ASP.NET и vue js в качестве внешнего интерфейса.

Спасибо

1 Ответ

3 голосов
/ 29 апреля 2019

К сожалению, вы не можете заставить JavaScript изменить значение вашего внутреннего кода C #, потому что JavaScript, когда-то созданный во внешнем интерфейсе, ничего не знает о вашем коде C # на сервере.

Однако вы можете присвоить значение C # переменной JavaScript до того, как она покинет сервер. Для этого нужно просто вставить значение @filterData на html-страницу в сценарии, а затем присвоить реальной переменной JavaScript в реальной среде JS во время выполнения:

<script>
    var x;
    var filterData = @filterData;
    var otherData = @otherData;
    var newData = @newData;

    function loadShipmentsByCondition() {
        x = document.getElementById("conditionSelect").value;
        if (x === "CMR not received") {
            filterData = newData;
        } else if(x === "Not invoiced") {
            console.log("INVOICE");
            filterData = otherData;
        }
    }
</script>

Таким образом, вы по сути преобразуете эти переменные C # в переменные JavaScript, но если вам действительно нужно изменить переменные C #, вам придется выполнить обратную передачу или AJAX-вызов на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...