Подтвердить что ты не робот

Как передать значение переменной бритвы из переменной javascript?

Как передать значение переменной razor из переменной javascript, возможно ли, как выглядит механизм просмотра asp.net mvc razor?

@{
    int a = 0;
}

<script>
    var b = ...
    @a = b;
</script>
4b9b3361

Ответ 1

Вы не можете. и причина в том, что они не "живут" в одно и то же время. Переменные Razor являются "переменными на стороне сервера", и они больше не существуют после того, как страница была отправлена ​​на "клиентскую сторону".

Когда сервер получает запрос на представление, он создает представление только с кодом HTML, CSS и Javascript. Нет кода на С#, все это "переводится" на языки на стороне клиента.

Код Javascript существует, когда представление все еще находится на сервере, но оно бессмысленно и будет выполняться только браузером (клиентская сторона снова).

Вот почему вы можете использовать переменные Razor для изменения HTML и Javascript, но не наоборот. Попробуйте посмотреть исходный код вашей страницы (CTRL + U в большинстве браузеров), там не будет никаких признаков кода С#.

Короче:

  • Сервер получает запрос.

  • Сервер создает "принимает" представление, вычисляет и переводит весь код С#, встроенный в представление, в CSS, Javascript и HTML.

  • Сервер возвращает версию браузера на стороне клиента в качестве ответа на запрос.
  • браузер отображает страницу и выполняет все Javascripts

Ответ 2

Но было бы возможно, если бы кто-то использовался вместо переменной в поле @html.Hidden. Как и в этом примере.

@Html.Hidden("myVar", 0);

установите поле за script:

<script>
function setMyValue(value) {
     $('#myVar').val(value);       
}
</script>

Надеюсь, что я могу хотя бы предложить небольшое решение.

Ответ 3

Я вижу, что эта проблема обсуждалась некоторое время назад, но если кто-нибудь еще встретится с этим, вот мое решение:

В вашем *.cshtml Просмотр файла:

<script>
var data = JsFunction("@Html.Raw(Model.Path)");
$(function () {
    $("#btn").click(function () {
        var model = { Id: '@Html.Raw(Model.Id)', Data: data }
        $.ajax({
            type: "POST",
            url: "/Controller/Action",
            data: model,
            datatype: "html",
            success: function() {
                console.log('Success');
            }
        });
    });
});
</script>

Переменная модель JavaScript - это то, что мне нужно передать в Razor ViewModel. Это можно сделать с помощью запроса ajax. Вам просто нужно иметь правильный аргумент /s в вашем действии, который соответствует объекту Json, созданному в JavaScript.

Надеюсь, что это поможет кому-то!

Ответ 4

Шаг: 1 Ваш Html, Сначала Сохраните значение в своем локальном хранилище с помощью javascript, затем добавьте строку, как показано ниже, вот где вы будете отображать значение в своем html, мой пример основан на boostrap:

<label for="stringName" class="cols-sm-2 control-
label">@Html.Hidden("stringName", "")</label>

Шаг: 2 Javascript

 $('#stringName').replaceWith(localStorage.getItem("itemName"));

Ответ 5

Параметр Razor View Server Side может быть прочитан для JavaScript на стороне клиента, используя @ В то время как и переменная стороне клиента JavaScript может читать Razor View с помощью @: