1

我有对象街,里面有一些照片。我正在尝试以与创建新街道对象相同的形式实现上传。所以想象一个带有字段的 mvc web 表单

  • 街道名称
  • 街道号码
  • 照片1
  • 照片2
  • 照片3

现在,在 create.cshtml 页面上,我有表单StreetNameStreetNumber字段和

<input type="file" name="postedImages" />
<input type="file" name="postedImages" />
<input type="file" name="postedImages" />

提交此表单后,我会将这些数据发送到 StreetController 以进行进一步处理

 [HttpPost]
 public ActionResult Create(StreetViewModel newData, IEnumerable<HttpPostedFileBase> postedImages)
 {
    //create object and save stretname and streetnumber
    //process posted images
    foreach(var image in postedImages)
    {
        //this is where error occured if I post only one or two images from my view
       if(image.ContentLength >0)
       {
          //process and save images
       }
    }

 }

如果我发布在网络表单上提供的确切数量的图像,您可以在我的评论行中阅读,一切都很好,但是如果我发送 1 或 2 个图像,则会发生错误。

如何解决这个问题?谢谢

4

3 回答 3

2

你可以这样做:

If(image != null)
    if(image.ContentLength > 0)
        {
           //code
        }

在获取属性之前检查它是否为空,这就是错误的原因。

于 2012-08-07T15:37:07.483 回答
2

foreach(var image in postedImages.Where(pi => pi != null))

于 2012-08-07T15:35:44.700 回答
2

null在访问属性之前ContentLength添加检查

if((image!=null) && (image.ContentLength >0))
{
      //process and save images
}
于 2012-08-07T15:33:42.510 回答