我一直在Razor中使用这样的东西
@section Includes {
<script type="text/javascript">
var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember)));
</script>
}
但这看起来并不那么干净,因为它与布局位于同一个文件中(因为它不能直接从.js文件中运行)。 访问和查看ViewModel的任何干净的替代方法是在.js文件中传递的吗?
答案 0 :(得分:1)
您无法直接访问.js文件中的ViewModel,因为它是Web服务器上的静态文件。但是有一种解决方法,您可以使用参数将ViewModel传递给.js文件。
一些.js文件
function Common() {
var _this = this;
this.viewModel = null;
this.showViewModel = function () {
alert(_this.viewModel);
};
}
var common = null;
$().ready(function () {
common = new Common();
});
然后在View加载时传递ViewModel
@section Includes {
<script type="text/javascript">
var somestuffneeded = @(Html.Raw(Json.Encode(Model.datamember)));
$(document).ready(function () {
common.viewModel = somestuffneeded;
common.showViewModel();
});
</script>
}