繁体   English   中英

.NET Core将JavaScript与CSHTML分离并访问ViewData

[英].NET Core separating JavaScript from CSHTML and access ViewData

有没有办法从单独的JavaScript文件访问ViewData,就像可以从CSHTML上的嵌入式JavaScript代码访问ViewData一样?

我想分离我的JavaScript代码并直接将数据加载到我的JavaScript文件中,而不是在HTML中使用隐藏字段,然后通过GetElementById访问它,因为将数据从HTML传递到JavaScript然后再返回很麻烦再次转换为HTML。

CSHTML文件

@using StatisticOndoAppCore.Models.ViewModels;
@using { var info = (Shop)ViewData["ShopInfo"]; }

嵌入式JavaScript代码

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,
...

您无法访问JavaScript文件中的ViewData ,因为JavaScript文件是静态文件。 但是您可以使用隐藏的输入(或数据属性)并通过ViewData设置值。 然后,它使您能够访问JavaScript中隐藏输入的值。

看到类似的堆栈溢出问题: 访问javascript文件中的Model属性?

更新 (以下代码可能有用,但未经测试)

@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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM