C# 使用asp.net mvc处理发布的图像

C# 使用asp.net mvc处理发布的图像,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我想使用asp.net mvc4一次保存多个图像。 在视图侧,我有5个浏览按钮,我成功了。在控制器端获取这些文件作为post操作的参数IEnumerable postedPhotos 我想知道是否发送了postedPhotos[0],如果是,请将其保存到数据库 通过剩余的postedPhotos集合进行迭代,并仅对那些实际包含照片的集合采取进一步的操作(用户只能发送一个或两个图像,而不是五个) 所以我试过了 if(postedPhotos.First() != null) foreach(var

我想使用asp.net mvc4一次保存多个图像。 在视图侧,我有5个浏览按钮,我成功了。在控制器端获取这些文件作为post操作的参数
IEnumerable postedPhotos

  • 我想知道是否发送了
    postedPhotos[0]
    ,如果是,请将其保存到数据库
  • 通过剩余的postedPhotos集合进行迭代,并仅对那些实际包含照片的集合采取进一步的操作(用户只能发送一个或两个图像,而不是五个)
  • 所以我试过了

    if(postedPhotos.First() != null)
    foreach(var photo in postedPhotos.Where(x=>x.ContentLength>0))
    {....}
    
    但这不起作用,因为我正在触摸
    postedPhoto
    null值,并且遇到异常

    Object reference not set to an instance of an object.
    
    当然,如果我发送全部五张照片,一切都会正常,但我对如何处理这种情况很感兴趣

    谢谢

    试试:

    if(postedPhotos != null && postedPhotos.FirsOrDefault() != null) 
    
    First()

    您也可以使用
    Any()
    而不是
    FirstOrDefault()!=空


    关于你的第二个问题:我不太清楚你想要什么。
    foreach
    循环仅在集合中有任何项目时才会迭代。

    您不需要测试
    First()
    any()
    或类似的内容,只要
    postedPhotos
    本身为空即可。foreach循环仅在列表中确实有项目时才会运行,因此检查
    Any()
    本质上是固有的。没错,但在我看来,他希望第一张照片与其他照片有所不同。但我并不清楚。我将在我的答案中添加您对
    foreach
    循环的评论。@HenkMollema我想检查第一项是否为null,并每隔一项迭代一次null@panjo这能回答你的问题吗?还是有些东西对你来说还不清楚?@panjo第一个项目,如果有任何项目存在,将永远不会为空,因此测试它是没有意义的。如果
    postedPhotos
    不为空,则它至少是一个空列表。然后,您可以进入foreach循环,如果该列表中没有项目,foreach循环将立即退出。