我通过检索& amp;存储会话中的多个值。从会话中分配值,如下所示:
var imageSessList = (List<string>)Session["ImagesNames"];
if (imageSessList != null)
{
string image1 = imageSessList[0];
string image2 = imageSessList[1];
string image3 = imageSessList[2];
string image4 = imageSessList[3];
}
但是如果会话只包含3个值,那么当分配string image4 = imageSessList[3];
时它会抛出null错误。
如何在这种情况下处理null。
答案 0 :(得分:2)
会话中的值可能为null,因此您必须在转换它们之前检查null。因此,初始条件为if (Session["ImagesNames"] != null)
现在可以安全地投射它们并分配给imageSessList
。因此变量imageSessList
将包含会话变量中的项,并且您需要根据它们的索引获取这些项,然后在访问它们之前更好地检查该数组索引是否存在。所以完整的代码将是这样的:
if (Session["ImagesNames"] != null)
{
var imageSessList = (List<string>)Session["ImagesNames"];
string image1 = imageSessList.Count>0? imageSessList[0]:"";
string image2 = imageSessList.Count>1? imageSessList[1]:"";
string image3 = imageSessList.Count>2? imageSessList[2]:"";
string image4 = imageSessList.Count>3? imageSessList[3]:"";
// Continue the job with these image variables
// Variables will be "" if those values are not found in the list
}
答案 1 :(得分:0)
您可以为所有
执行此操作var imageSessList = (List<string>)Session["ImagesNames"];
if (imageSessList != null)
{
string img1= imageSessList.Count>0? imageSessList[0]:"";
}
答案 2 :(得分:0)
如果您需要单独处理每个文件,可以使用for
或foreach
循环,如下所示
var imageSessList = Session["ImagesNames"] as List<string>;
foreach(string file in imageSessList)
{
//do something with file
}
如果您需要4个文件来处理某些内容,请检查项目计数并继续
if(imageSessList!=null && imageSessList.Count ==4)
{
string image1 = imageSessList[0];
string image2 = imageSessList[1];
string image3 = imageSessList[2];
string image4 = imageSessList[3];
}else
{
// show error message
}
答案 3 :(得分:0)
检查以下代码行。通过这种方式,如果您的会话不包含第4项,第3项或第2项,您将不会收到任何错误。如果项目在会话列表中,它将绑定项目值。
var imageSessList = (List<string>)Session["ImagesNames"];
if (imageSessList != null)
{
for (int i = 0; i < imageSessList.Count; i++)
{
if (imageSessList[i] != null && i == 0)
{
string image1 = imageSessList[i];
}
if (imageSessList[i] != null && i == 1)
{
string image2 = imageSessList[i];
}
if (imageSessList[i] != null && i == 2)
{
string image3 = imageSessList[i];
}
if (imageSessList[i] != null && i == 3)
{
string image4 = imageSessList[i];
}
}
}
答案 4 :(得分:-1)
请务必先检查该会话值是否存在......
if(Session["ImagesNames"] != null){...}
甚至更好地使用as
运算符......
var imageSessList = Session["ImagesNames"] as List<string>;
if (imageSessList != null)
{
string image1 = imageSessList[0];
string image2 = imageSessList[1];
string image3 = imageSessList[2];
string image4 = imageSessList[3];
}
然后检查列表索引中的所需键...确保您没有尝试访问索引中不存在的键...
if(imageSessList.Count > 0) image1 = imageSessList[0];
if(imageSessList.Count > 1) image2 = imageSessList[1];
if(imageSessList.Count > 2) image3 = imageSessList[2];
答案 5 :(得分:-1)
为什么不在字符串变量中传递值之前检查值是否为空?
string image1 = imageSessList[3] ?? string.Empty;
答案 6 :(得分:-2)
试试这个。
if (imageSessList != null)
{
string image1 = Convert.Tostring(imageSessList[0]);
string image2 = Convert.Tostring(imageSessList[1]);
string image3 = Convert.Tostring(imageSessList[2]);
string image4 = Convert.Tostring(imageSessList[3]);
}