如何将值从javascript变量传递给razor变量?
如何将值从javascript变量传递给razor变量,是否有可能是asp.net mvc razor视图引擎?
@{ int a = 0; } var b = ... @a = b;
你不能。 原因是他们不是在同一时间“活着”。 Razor变量是“服务器端变量”,在页面发送到“客户端”后它们不再存在。
当服务器获取视图请求时,它会创建仅包含HTML,CSS和Javascript代码的视图。 没有留下C#代码,它们都被“翻译”为客户端语言。
当视图仍在服务器上时,Javascript代码DO存在,但它没有意义,只能由浏览器执行(客户端再次执行)。
这就是为什么你可以使用Razor变量来改变HTML和Javascript但反之亦然。 尝试查看您的页面源代码(大多数浏览器中的CTRL + U),那里没有C#代码的迹象。
简而言之:
-
服务器获取请求。
-
服务器创建“获取”视图,计算并将嵌入在视图中的所有C#代码转换为CSS,Javascript和HTML。
- 服务器将视图的客户端版本作为对请求的响应返回给浏览器。
- 浏览器呈现页面并执行所有Javascripts
但是如果用一个代替@ html.Hidden字段中的变量,就有可能。 如在这个例子中。
@Html.Hidden("myVar", 0);
设置每个脚本的字段:
我希望我至少可以提供不小的解决方法。
我看到这个问题已经讨论了一段时间了,但是如果有人再次见到这个问题,这是我的解决方案:
在您的* .cshtml视图文件中:
JavaScript变量模型是我需要传递给Razor ViewModel的东西。 它可以使用ajax请求完成。 你只需要在你的动作中有适当的参数,与你在JavaScript中创建的Json对象相匹配。
希望它能帮助别人!
步骤:1你的Html,首先使用javascript将值存储在localstorage中,然后添加如下所示的行,这是你要在html中显示值的地方,我的例子基于boostrap:
步骤:2 Javascript
$('#stringName').replaceWith(localStorage.getItem("itemName"));
好的,所以这个问题很老……但是我想做类似的事情,我发现了一个适合我的解决方案。 也许它可以帮助别人。
我有一个List
,我填写下拉列表。 我想将该选择放入我在表单中创建的Question
对象的QuestionType
属性中。 我正在使用Knockout.js
进行选择绑定。 这会在用户选择一个时将self.QuestionType
knockout observable属性设置为QuestionType
对象。
我有一个隐藏字段来保存这个对象:
@Html.Hidden("NewQuestion.QuestionTypeJson", Model.NewQuestion.QuestionTypeJson)
在observable的订阅中,我将隐藏字段设置为对象的JSON.stringify
-ed版本。
self.QuestionType.subscribe(function(newValue) { if (newValue !== null && newValue !== undefined) { document.getElementById('NewQuestion_QuestionTypeJson').value = JSON.stringify(newValue); } });
在Question
对象中,我有一个名为QuestionTypeJson
的字段,当用户选择问题类型时,该字段将被填充。 我使用此字段来获取Question
对象中的Question
如下所示:
public string QuestionTypeJson { get; set; } private QuestionType _questionType = new QuestionType(); public QuestionType QuestionType { get => string.IsNullOrEmpty(QuestionTypeJson) ? _questionType : JsonConvert.DeserializeObject(QuestionTypeJson); set => _questionType = value; }
因此,如果QuestionTypeJson
字段包含某些内容,它将反序列化它并将其用于QuestionType
,否则它将仅使用支持字段中的内容。
我基本上’传递’了一个JavaScript对象到我的模型,而不使用Razor
或Ajax
调用。 你可以在不使用Knockout.js
情况下做类似的事情,但这就是我正在使用的……
Razor View Server Side变量可以使用@读取到客户端JavaScript。而While和JavaScript客户端变量可以使用@读取到Razor View:
上述就是C#学习教程:如何将值从javascript变量传递给razor变量?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1015069.html