Несколько Telerik MVC управления загрузкой на странице? - PullRequest
2 голосов
/ 25 января 2012

Я использую Telerik Extensions для ASP.NET MVC 3, и у меня возникла проблема с элементом управления Upload. Я хотел бы иметь несколько элементов управления загрузкой на одной странице (например, я запрашиваю изображение и звуковой файл). Проблема в том, что работает только первый элемент управления Upload. Все остальные на странице отображаются нормально, и нажатие на них по-прежнему вызывает диалог выбора файла, но на самом деле никто не отвечает, кроме первого.

Telerik, похоже, не сообщает о каких-либо ошибках в консоли или о чем-либо, просто он не работает. Есть ли что-то конкретное, что я должен сделать, чтобы разрешить несколько элементов управления загрузкой на одной странице?

Для демонстрации, это неработающий код, который не работает:

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemImageOnSuccess")
        .OnError("ItemImageOnError")
    )
)

@(Html.Telerik().Upload()
    .Name("attachments")
    .Async(async => async.Save("Save", "Resource").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemSoundOnSuccess")
        .OnError("ItemSoundOnError")
    )
)

Второе поле загрузки отображается правильно, но не работает.

1 Ответ

6 голосов
/ 25 января 2012

Для всех, кто сталкивался с подобной проблемой, мне удалось решить ее самостоятельно.
Моя проблема заключалась в том, что у меня были все элементы управления загрузкой на странице с одинаковым именем, что, в свою очередь, давало им одинаковый идентификатор, поэтомувесь javascript Telerik будет работать только на первом элементе управления Upload.Исправление очевидно: измените имена.

Однако это привело к возникновению новой проблемы, поскольку все используемые мной элементы управления «Загрузка» указывали на одну и ту же функцию, а при изменении имени элемента управления параметр не выполнялся.карта правильно больше, и я просто получаю нулевой список файлов.Чтобы исправить эту проблему , мне нужно было добавить дополнительный параметр к функции .Save(), чтобы сообщить ему имя поля.

Вот исправление для моего кода выше:

@(Html.Telerik().Upload()
    .Name("ImageUpload")
    .Async(async => async.Save("Save", "Resource", "attachments").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemImageOnSuccess")
        .OnError("ItemImageOnError")
    )
)

@(Html.Telerik().Upload()
    .Name("SoundUpload")
    .Async(async => async.Save("Save", "Resource", "attachments").AutoUpload(true))
    .ClientEvents(events => events
        .OnSuccess("ItemSoundOnSuccess")
        .OnError("ItemSoundOnError")
    )
)
...