我有一个gridview从对象数据源获取数据。对象数据源从采用一个参数(字符串)的方法获取数据。该参数使用querystring从页面url提供,默认值设置为null。在方法取参数中,我试图检查参数是否为null返回所有数据返回数据 从参数中获取id - 例如代码。
public list<string> MyMethod (string param)
{
if(param == null)
{
return // all
}
else
{
return // id with param
}
}
我尝试调试程序,param实际上是null但if()语句总是处于“false”状态。即param == null总是评估为false。我尝试了String.IsNullorEmpty(param),它仍在评估为false。我不明白问题是什么。请帮忙。 非常感谢。
答案 0 :(得分:2)
让我猜一下。可能是您的输入参数param
具有"null"
而非null
的情况。例如,在您的情况下
if (param == null) // you're comparing "null" == null which will always be false.
修改强>
宝贵意见:
将param
添加到观察窗口并检查值是多少。在你的情况下,我非常确定它不是null
。
答案 1 :(得分:2)
您是否尝试过单步调试(假设您正在使用visual studio)?
在方法签名上放置一个断点,然后将鼠标悬停在param变量上,看看每个步骤后它的值是什么。
调试将帮助您快速识别此类问题的根源。
修改强>
您添加的屏幕截图显示您的param变量等于字符串“null”,而不是null
。
您可以将if语句更改为if(param ==“null”)并且这应该可行,但是对此的真正修复很可能根本不使用字符串“null”,因此需要在任何地方进行编辑您分配传递给函数的变量。
此外,您的代码示例是param == null但您的屏幕截图是param!= null。 !=表示不相等,我不确定这只是一个错字还是你没有注意到。
答案 2 :(得分:2)
您是否绝对确定该对象为null,空字符串与空对象之间存在很大差异!!
if(String.IsNullorEmpty(param))
{
return list;
}
else
{
return list.findIndex(param);
}
答案 3 :(得分:2)
现在添加了屏幕截图后,我们可以看到您传递给方法"null"
参数而不是null
。
我不熟悉QueryString,但这可能会有所帮助:
如果您使用QueryStringParameter,则可以将这些属性设置为null
而不是"null"
:
<asp:QueryStringParameter DefaultValue="" ConvertEmptyStringToNull="True" />
你也需要设置
<asp:SqlDataSource CancelSelectOnNullParameter="False" />
答案 4 :(得分:1)
尝试:
if (String.IsNullOrEmpty(param))
{
}
使用此语法,您还可以将字符串设置为""
。