【发布时间】:2013-08-19 06:11:47
【问题描述】:
我在 MVC3 项目中有一个视图,在加载时我将一个实体设置到 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'));
}
但出于某种原因,我得到了
无法对空引用执行运行时绑定
这是我的控制器代码:
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 asp.net-mvc-3 runtime-error viewbag