使用JQuery访问ViewData

时间:2011-02-12 09:51:57

标签: c# jquery model-view-controller

我正在开发一个mvc应用程序。我为不同的操作写了一个jquery并保存到一个名为my.js的js文件中。我将js文件包含在我的页面中。

 <script src="../../Scripts/my.js" type="text/javascript"></script>      

如何从该js文件访问ViewData。我尝试了很多方法。但还没有工作。 我用来从js文件访问ViewData的代码如下所示。

 var CalanderPreference = "<%= ViewData["CalanderPreference"] %>";

但它返回了一个错误,如'预期; “

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

客户端无法访问ViewData,因为它仅存在于视图渲染中。

您可以将视图数据序列化到服务器端的json,将其写入隐藏字段,然后将其解析为客户端的javascript对象。

答案 1 :(得分:2)

您可以在视图中创建javascript对象,如本例所示。

将此放入您的视图中,而不是单独的文件中:

        <script type="text/javascript">
            $(function() {
                var saleYear = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Year %>");
                var saleMonth = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Month %>") - 1;
                var saleDay = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Day %>");
                var saleHour = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Hour %>");
                var saleMinute = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Minute %>");
                var saleSecond = parseInt("<%=ViewData.Model.Sale24Hours.EndDate.Second %>");
                var endSaleDate = new Date(saleYear, saleMonth, saleDay, saleHour, saleMinute, saleSecond);
                $("#countDownSale24").countdown({ until: endSaleDate, compact: true, format: "HMS" });
            });
        </script>