【发布时间】:2018-02-11 16:35:33
【问题描述】:
我有一个 .NET Core 2 Razor 视图,其中底层模型位于 *.cshtml.cs 文件中。假设我有一个这样的字符串:
public string myVar = "hello world";
如何在我的外部 JavaScript 文件中访问这个变量(数据)?
例如在以下情况下我需要这个。我正在使用 jVectorMap jquery 库。在那里我可以选择地图的多个区域。我必须保存选定的区域(比如说在唯一 id 的数组中),以便如果用户加载带有地图的特殊页面,我可以使用选定的区域预先填充地图。并且数据(所选区域)可以不同的用户做不同的事情。所以我必须为每个用户存储数据并且必须加载数据。 jVectorMap 有一个 API 函数,允许使用一些数据预先填充地图。
但是如何访问外部 javascript 文件中保存的变量/数据?
编辑: 我在这里添加了一个示例:https://dotnetfiddle.net/QV4Fi1
【问题讨论】:
-
在我的项目中,我使用 cookie 在它们之间传递数据。或者您可以设置一个隐藏的 div,其中包含您从 JS 读取的所有数据
-
在您的视图中添加
@inject IJsonHelper Json;,然后在您的脚本中 -var value = @Html.Raw(Json.Serialize(Model.myVar))(假设您的脚本不在外部 js 文件中) -
@StephenMuecke 如果我的脚本是外部 js 文件?那怎么办呢?
-
您需要在主视图中执行此操作(即将其分配为全局变量)并在外部文件中访问
value。或者,您可以将其作为data属性分配给元素 - 例如<button data-value="@Model.myVar" ... >和 js 文件中的$('button').click(function() { var value = $(this).data('value');.... ` -
好的,我明白了,但我的数据不在主视图中。我想从模型类中访问变量。
标签: javascript c# asp.net-core-mvc