C# Viewbag类型datetime为null,但视图显示空字符串,无法显示数据(MVC)

C# Viewbag类型datetime为null,但视图显示空字符串,无法显示数据(MVC),c#,asp.net-mvc,web,C#,Asp.net Mvc,Web,我有一些问题。 我从控制器获得了VIEWBAG,并将数据指定为代码并显示 我在Jquery上检查它显示“无法对空引用执行运行时绑定” @ViewBag.detail.from_date_go为空,但如果条件为false,则查询检查通过,但如果条件为false,为什么查询接受 '@ViewBag.detail.from_date_go'==''如果@ViewBag.detail.from_date_go为空 这里对所有代码进行评估。 您必须在服务器端检查空值。在代码中,您在客户端签入 使用“@if

我有一些问题。 我从控制器获得了VIEWBAG,并将数据指定为代码并显示 我在Jquery上检查它显示“无法对空引用执行运行时绑定”

@ViewBag.detail.from_date_go为空,但如果条件为false,则查询检查通过,但如果条件为false,为什么查询接受

'@ViewBag.detail.from_date_go'==''如果@ViewBag.detail.from_date_go为空

这里对所有代码进行评估。 您必须在服务器端检查空值。在代码中,您在客户端签入

使用“@if”检查razor中的空值,而不是javascript中的空值

例如:

@if (MyValue != null) {
    //This code will be evaluated only if MyValue is not null
    <script>
    $(function(){
        $('#MyField').val('@MyValue.ToString()');
    });
    </script>
}
@if(MyValue!=null){
//仅当MyValue不为null时,才会计算此代码
$(函数(){
$('#MyField').val('@MyValue.ToString()');
});
}
最简单的方法是直接编写html:

<input type="text" value='@(MyValue != null ? MyValue.ToString() : "")' />

或者在脚本标记中

<script>
    $(function(){
        //...
        @if (MyValue != null) {
            @Html.Raw("$('#MyField').val('" + MyValue.ToString() + "');");
        }
        //...
    });
</script>

$(函数(){
//...
@如果(MyValue!=null){
@Html.Raw(“$”(“#MyField”).val(“+MyValue.ToString()+”);”;
}
//...
});
记住:当您使用@if时,它发生在服务器端。当您在javascript中使用if时


希望能有所帮助;-)

由于在
null
上调用
ToString()
,因此引发异常。在代码中,if语句不会在服务器端运行,除非调用as
@if(!string.IsNullOrWhitespace(ViewBag.detail.from_date_go)){…}