.Net список HttpPostedFileBase ничего не возвращает из IE / Edge, но List без элементов из Chrome - PullRequest
0 голосов
/ 08 октября 2019

У меня есть следующая модель

Public Class MyGreatModel
   ...properties
   Public Property Media as IEnumerable(of HttpPostedFileBase)
   ...more properties
End Class

И такой вид

@Using Html.BeginForm("FormSubmission", "ControllerName", FormMethod.Post, New With {.enctype = "multipart/form-data"})
    @<div>
        @Html.LabelFor(Function(model) model.Media, New With {.class = "button-secondary"})
        @Html.TextBoxFor(Function(model) model.Media, New With {.type = "file", .multiple = "", .accept = "image/*,video/*"})
        <button name="submit" type="submit">Submit form</button>
    </div>
End Using

Это создает форму с множественным выбором включенного стандартного ввода файла. Пользователи могут добавлять несколько файлов, и они привязываются к свойству Media. Все отлично работает, и я могу манипулировать файлами в списке на стороне сервера.

Проблема возникает, когда нет носителя.

Возьмите следующий фрагмент на стороне сервера,

If editModel.Media IsNot Nothing Then
    For Each f In editModel.Media
        If f IsNot Nothing Then
            listOfMedia.Add(Repository.InsertMedia(f))
        End If
    Next
End If

Когда в Chrome editModel.Media - это не ничто, это список с числом 0.

В IE или Edge editModel.Media - это ничто.

Этоне является проблемой в приведенном выше коде, так как я обернул все в операторе If, но ранее у меня не было этого оператора if, и в IE / Edge это не удалось в цикле For, так как editModel.Media был Nothing.

Мне в основном любопытно, почему между этими двумя браузерами существует разное поведение, и является ли это известной вещью или что-то, что я могу сделать, чтобы каким-то образом исправить на стороне клиента, чтобы сделать его согласованным.

...