【问题标题】:.NET Core separating JavaScript from CSHTML and access ViewData.NET Core 将 JavaScript 与 CSHTML 分离并访问 ViewData
【发布时间】:2016-12-14 00:57:29
【问题描述】:

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

我想分离我的 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 html asp.net-core


    【解决方案1】:

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

    查看类似的堆栈溢出问题: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
    }
    

    【讨论】:

    • 感谢您的回复 - 这就是我想知道的是否可以避免。但是可以看到我必须这样做。
    • 对不起,我没听懂。
    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 2012-03-29
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多