使用asp .net mvc5,如何在javascript中恢复模型? 这是我的代码
控制:
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
查看:
public ActionResult Test() {
var data = List<string>() {
"test",
"essai"
};
return View(data);
}
部分Js:
@model ...
@section scripts {
<script src="~/Scripts/Parametre/DatePublication.js"></script>
}
找不到部分Js中的@Model。
答案 0 :(得分:1)
您无法在 Razor 中执行此操作,因为在 Razor 中,使用@
块的每个内容都会被Razor自动 HTML 编码
解决方案是迭代您的列表并创建一个javascript
数组。
var myArray = [];
@foreach (var item in Model)
{
@:myArray.push('@item');
}
console.log(myArray);
在@foreach
区块内,您需要使用markup
标记或Javascript
标记标记@:
或<text>
。
答案 1 :(得分:0)
Model
仅适用于可执行服务器代码的剃刀视图。如果你想将它作为外部javascript文件中的javascript数组,你可以将它读取到剃刀视图中的js数组变量,稍后在其他脚本中使用它
<script>
var myArray = @Html.Raw(JsonConvert.SerializeObject(Model))
console.log(myArray);
</script>
<script src="ExternalJsFile.js"></script>
您现在可以在ExternalJsFile.js
访问myArray。
通过简单的全局变量传递数据并不是一个好主意。它们很容易被覆盖。(如果你加载的某些第三方插件脚本也使用相同的变量名怎么办?)所以你应该考虑命名空间来保证数据安全。
例如,
<script>
var myApp = myApp || {};
myApp.pageData = myApp.pageData || {};
myApp.pageData.model = @Html.Raw(JsonConvert.SerializeObject(Model));
</script>
<script src="ExternalJsFile.js"></script>
现在在externalJs文件中,您可以像console.log(myApp.pageData.model)