Asp.net mvc JQuery中的MVC空视图包

Asp.net mvc JQuery中的MVC空视图包,asp.net-mvc,c#-4.0,viewbag,Asp.net Mvc,C# 4.0,Viewbag,我有一个没有价值的ViewBag。我甚至没有定义ViewBag.SelectVale 所以我希望它是一个空值 在JQuery中执行以下操作但不起作用时: if ('@ViewBag.SelectVale' == null){ // do something } 取而代之的是: if ('@ViewBag.SelectVale' == ""){ // do something } 在.NET framework中,null以空

我有一个没有价值的ViewBag。我甚至没有定义ViewBag.SelectVale 所以我希望它是一个空值

在JQuery中执行以下操作但不起作用时:

    if ('@ViewBag.SelectVale' == null){ 

     // do something

     }
取而代之的是:

    if ('@ViewBag.SelectVale' == ""){ 

     // do something

     }

在.NET framework中,
null
以空字符串的形式获取输出,因此,如果您查看发送到浏览器的实际javascript,在第一种情况下,它会说:

if ('' == null)
if ('' == "")
。。。在第二种情况下,它会说:

if ('' == null)
if ('' == "")
大多数javascript程序员会告诉您只需将语句更改为:

if ('@ViewBag.SelectVale')
。。。因为在javascript中将空字符串视为布尔值时,其计算结果为
false

或者,由于这里似乎没有任何真正的动态变化,请尝试以下方法:

@if(ViewBag.SelectVale == null) {
    <text>
        // do something in javascript.
    </text>
}
@if(ViewBag.SelectVale==null){
//用javascript做一些事情。
}

。。。这甚至可以避免输出“do something”javascript,因为在呈现页面时,您知道SelectVale为空。

但是您将razor eval放在了引号中。。。在JavaScript中将其设置为字符串(顺便说一句,您正在进行比较)。如果您查看razor视图生成的HTML,应该会很明显……如果('@ViewBag.SelectVale'='')对我有效。非常感谢。