javascript - 检查 ViewBag 值是否为 null

标签 javascript asp.net-mvc-3 runtime-error viewbag

我在 MVC3 项目中有一个 View ,在加载时我将一个实体设置到 ViewBag 中。 该实体的属性之一的类型为 Datetime?$(document).ready我将 ViewBag 中的数据加载到 View 字段中。 为了正确加载日期,我必须解析日期:

$('#date_datepicker').datepicker("setDate", new Date('@ViewBag.Ent.MyDate.Year', '@ViewBag.Ent.MyDate.Month', '@ViewBag.Ent.MyDate.Day'));

当然,我首先检查 @ViewBag.Ent.MyDate 的值是否为通过以下方式不为 null 或空:

if ('@ViewBag.Ent.MyDate' != null && '@ViewBag.Ent.MyDate' != '')

意思是,这是我的代码:

if ('@ViewBag.Ent.MyDate' != null && '@ViewBag.Ent.MyDate' != '') {
            $('#date_datepicker').datepicker("setDate", new Date('@ViewBag.Ent.MyDate.Year', '@ViewBag.Ent.MyDate.Month', '@ViewBag.Ent.MyDate.Day'));
        }

但出于某种原因我得到
无法对空引用执行运行时绑定(bind)

这是我的 Controller 代码:

public ActionResult PropertiesPage(string id)
    {
         if (!string.IsNullOrEmpty(id))
            {
                int myID = 0;
                int.TryParse(id, out myID);

                ent = myBL.GetByEntID(myID);
                ViewBag.Ent = ent ;
            }

            return View();

    }

为什么Javascript会通过我的if声明然后失败?

编辑: 我尝试根据 Kenneth 的回答将我的 Javascript 更改为:

@{if (ViewBag.Ent.MyDate != null) {
            <script type="text/javascript">
                $('#date_datepicker').datepicker("setDate", new Date('@ViewBag.Ent.MyDate.Year', '@ViewBag.Ent.MyDate.Month', '@ViewBag.Ent.MyDate.Day'));
            </script>
        }
}

这不会导致错误,但它不起作用(由于语法错误,脚本失败)。 代码生成:

<script type="text/javascript">
                $('#date_datepicker').datepicker("setDate", new Date('@ViewBag.Ent.MyDate.Year', '@ViewBag.Ent.MyDate.Month', '@ViewBag.Ent.MyDate.Day'));
            </script>

(意思是 <script><script> 内)

谢谢

最佳答案

对我有用的是将脚本标签放在 javascript 代码周围,如您在编辑中所示:

@if (ViewBag.Ent.MyDate != null) {
    <script type="text/javascript">
        $('#InitDate_datepicker').datepicker("setDate", new Date('@ViewBag.Ent.MyDate.Year', '@ViewBag.Ent.MyDate.Month', '@ViewBag.Ent.MyDate.Day'));
    </script>
}

但我将整个 if block 拉到现有脚本 block 之外,因此它不是双重嵌套的。

关于javascript - 检查 ViewBag 值是否为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18307383/

相关文章:

javascript - 用于 javascript 的 Url.Content

Python 错误 : unsupported operand type(s) for +: 'int' and 'datetime.timedelta'

java - fatal error VS 异常

javascript - 我可以将 javascript Prototype 添加到我的数组实例吗?

javascript - 如何在窗口调整大小时为等高子项重新加载 div

asp.net-mvc-3 - ASP.NET MVC 3中的密码数据注释

C++ 错误消息 : invalid pointer

javascript - 调整大小时 slider 全宽

javascript - 部分化模板的行为不符合预期

jquery - 使用参数打开 jQuery 对话框