Как передать значение переменной razor из переменной javascript, возможно ли, как выглядит механизм просмотра asp.net mvc razor?
@{
int a = 0;
}
<script>
var b = ...
@a = b;
</script>
Как передать значение переменной razor из переменной javascript, возможно ли, как выглядит механизм просмотра asp.net mvc razor?
@{
int a = 0;
}
<script>
var b = ...
@a = b;
</script>
Вы не можете. и причина в том, что они не "живут" в одно и то же время. Переменные Razor являются "переменными на стороне сервера", и они больше не существуют после того, как страница была отправлена на "клиентскую сторону".
Когда сервер получает запрос на представление, он создает представление только с кодом HTML, CSS и Javascript. Нет кода на С#, все это "переводится" на языки на стороне клиента.
Код Javascript существует, когда представление все еще находится на сервере, но оно бессмысленно и будет выполняться только браузером (клиентская сторона снова).
Вот почему вы можете использовать переменные Razor для изменения HTML и Javascript, но не наоборот. Попробуйте посмотреть исходный код вашей страницы (CTRL + U в большинстве браузеров), там не будет никаких признаков кода С#.
Короче:
Сервер получает запрос.
Сервер создает "принимает" представление, вычисляет и переводит весь код С#, встроенный в представление, в CSS, Javascript и HTML.
Но было бы возможно, если бы кто-то использовался вместо переменной в поле @html.Hidden. Как и в этом примере.
@Html.Hidden("myVar", 0);
установите поле за script:
<script>
function setMyValue(value) {
$('#myVar').val(value);
}
</script>
Надеюсь, что я могу хотя бы предложить небольшое решение.
Я вижу, что эта проблема обсуждалась некоторое время назад, но если кто-нибудь еще встретится с этим, вот мое решение:
В вашем *.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.
Надеюсь, что это поможет кому-то!
Шаг: 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"));
Параметр Razor View Server Side может быть прочитан для JavaScript на стороне клиента, используя @ В то время как и переменная стороне клиента JavaScript может читать Razor View с помощью @: