根据 ViewBag 值运行 JavaScript 块

Posted

技术标签:

【中文标题】根据 ViewBag 值运行 JavaScript 块【英文标题】:Run JavaScript block depending on ViewBag value 【发布时间】:2016-04-19 21:37:44 【问题描述】:

我正在尝试运行一段 javascript 代码,但前提是 ViewBag 值等于 null。下面是一个例子:

<script type="text/javascript">
    var defDate = @ViewBag.EndDate;
    if (defDate == null)
    
        $('#dt2').datetimepicker(
            locale: 'en-GB',
            format: 'L',
            showClear: true
        );
    

    else
    
        $('#dt2').datetimepicker(
            defaultDate: defDate,
            locale: 'en-GB',
            format: 'L',
            showClear: true
        );
    

</script>

但是,这似乎不起作用,因此我们将不胜感激。

编辑:

我想我可以在启动时运行这两个 JavaScript 块?我是否应该制作一个单独的在启动时运行然后运行相关(非启动)功能 - 如果这有意义吗?

这里是按要求初始化 ViewBag 的地方:

ViewBag.EndDate = endDateFilter;

【问题讨论】:

首先尝试将您的代码放入$(document).ready(function()。其次,你能发布初始化ViewBag.EndDate的代码吗? @erikscandola 我会把它添加到帖子中,但这应该很重要,只要假设它是 null 或者它有一个值。 但如果 value 是字符串,则需要添加引号:"@ViewBag.EndDate"。如果值为DateTime,则解决方案不一样。 对不起,我明白了,它被解析为一个字符串,就像 Felix Cen 的回答一样。感谢您的帮助。 没问题。是的,即使你总是初始化endDateFilter,如果你有一个字符串,Felix 的答案是正确的。如果 endDateFilter 没有在您的 javascript 中初始化,您将拥有 var defDate = "null"; 并且 if 将不起作用。 【参考方案1】:

您需要将 viewbag 值用引号括起来。试试下面的

<script type="text/javascript">
        var defDate = '@ViewBag.EndDate';
        if (defDate == '')
        
            $('#dt2').datetimepicker(
                locale: 'en-GB',
                format: 'L',
                showClear: true
            );
        

        else
        
            $('#dt2').datetimepicker(
                defaultDate: defDate,
                locale: 'en-GB',
                format: 'L',
                showClear: true
            );
        

    </script>

【讨论】:

完美运行。非常感谢 - 以为我很接近,只是表明我缺乏 JS 知识!【参考方案2】:

替换

(defDate == null)

(defDate.length < 1)

【讨论】:

你好,试过了,还是不行,日期选择器打不开。

以上是关于根据 ViewBag 值运行 JavaScript 块的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Razor 视图引擎在 JavaScript 中正确混合 C# 代码。我希望根据 ViewBag 中的值包含或省略 Javascript

javascript分页显示

如何根据下拉列表选择的值更改表中的数据

如何使用来自 ViewBag 的 JSON 填充 javascript 变量?

可以从 Javascript 文件访问 MVC ViewBag 对象吗?

asp.net mvc 显示 ViewBag 字典到 javascript