有没有办法从单独的JavaScript文件访问ViewData,就像您可以从CSHTML上的嵌入式JavaScript代码访问它一样?
我想分离我的JavaScript代码并直接在我的JavaScript文件中加载数据,而不是在我的HTML中使用隐藏字段,然后通过GetElementById访问它,因为将数据从HTML传递到JavaScript似乎很乏味然后再回到HTML。
@using StatisticOndoAppCore.Models.ViewModels;
@using { var info = (Shop)ViewData["ShopInfo"]; }
subscriptionShopData = [
{ y: 'Uge ' + @info.currentWeek, a: @info.creationsCurrentWeek },
{ y: 'Uge ' + @info.currentWeek - 1, a: @info.creationsLastWeek },
{ y: 'Uge ' + @info.currentWeek - 2, a: @info.creationsCurrentWeekMinusTwo },
{ y: 'Uge ' + @info.currentWeek - 3, a: @info.creationsCurrentWeekMinusThree }
];
new Morris.Bar({
element: 'bar-subscriptions-shop',
data: subscriptionShopData,
...
答案 0 :(得分:1)
您无法访问JavaScript文件中的ViewData
,因为JavaScript文件是静态文件。但您可以使用隐藏的输入(或数据属性)并使用ViewData
设置值。然后,它允许您访问JavaScript中隐藏输入的值。
查看类似的Stack Overflow问题: Access a Model property in a javascript file?
更新(以下代码可能有用,但未经过测试)
@section scripts
{
<script>
$(function(){
var subscriptionShopData = [
{ y: 'Uge ' + @info.currentWeek, a: @info.creationsCurrentWeek },
{ y: 'Uge ' + @info.currentWeek - 1, a: @info.creationsLastWeek },
{ y: 'Uge ' + @info.currentWeek - 2, a: @info.creationsCurrentWeekMinusTwo },
{ y: 'Uge ' + @info.currentWeek - 3, a: @info.creationsCurrentWeekMinusThree }
];
});
</script>
<script src="..."></script>// use subscriptionShopData variable in this js
}