Opa*_*114 6 javascript c# asp.net-core-mvc
我有一个 .NET Core 2 Razor 视图,其中包含一个 *.cshtml.cs 文件中的底层模型。假设我有一个这样的字符串:
public string myVar = "hello world";
Run Code Online (Sandbox Code Playgroud)
如何在我的外部 JavaScript 文件中访问这个变量(数据)?
例如,在以下情况下,我需要这个。我正在使用 jVectorMap jquery 库。在那里我可以选择地图的多个区域。我必须保存选定的区域(比方说在一组唯一 id 中),以便我可以使用选定的区域预先填充地图,如果用户加载带有地图的特殊页面。并且数据(选定区域)可以不同做不同的用户。所以我必须为每个用户存储数据,并且必须加载数据。jVectorMap 有一个 API 函数,它允许用一些数据预先填充地图。
但是如何在外部 javascript 文件中访问我保存的变量/数据?
编辑: 我在这里添加了一个例子:https : //dotnetfiddle.net/QV4Fi1
选项1
模型
public class MyModel
{
public string MyProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
cshtml
@model WebAppp.MyModel
@Html.HiddenFor(x=>x.MyProperty)
Run Code Online (Sandbox Code Playgroud)
javascript
$("#MyProperty").val();
Run Code Online (Sandbox Code Playgroud)
选项 2
在控制器中,您可以存储在 ViewData 或 ViewBag 中
ViewBag["MyPropertyValue"] ="something";
Run Code Online (Sandbox Code Playgroud)
在 cshml 中(我还没有尝试过,但应该可以工作)
@Html.Hidden("MyProperty",ViewData["MyPropertyValue"],new { @class = "someclass" })
Run Code Online (Sandbox Code Playgroud)
javascript
$("#MyProperty").val();
Run Code Online (Sandbox Code Playgroud)
您可以轻松地将C#/Razor值作为字符串获取。
<script type="text/javascript">
var i = parseInt('@Model.i');
</script>
Run Code Online (Sandbox Code Playgroud)
或者您可以尝试使用以下给定的选项。
选项1:
var myVar = '@Model.MyVar';
var name = '@Model.Name';
Run Code Online (Sandbox Code Playgroud)
选项 2:
var myVar ='@Html.Raw(Model.MyVar)';
var name = '@Html.Raw(Model.Name)';
Run Code Online (Sandbox Code Playgroud)
Here is an example with an strong typed ViewModel and an C#-list which will be serialized into an js-array.
The ViewModel:
namespace ProjectName.ViewModels
{
public class MyViewModel
{
// List
public List<string> MyList { get; set; }
// a simple variable
public string MyVar{ get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
In the view use the following code to pass the list of your C#-ViewModel to an JavaScript array.
The View (*.cshtml):
@model MyProject.ViewModels.MyViewModel
<script type="text/javascript">
var myArray = JSON.parse('@Json.Serialize(@Model.MyList)');
var myVar = '@Model.MyVar';
</script>
Run Code Online (Sandbox Code Playgroud)
Instead of the list you can also use an object.
| 归档时间: |
|
| 查看次数: |
15143 次 |
| 最近记录: |