несколько частичных представлений с одним и тем же управлением загрузкой kendo mvc

У меня было частичное представление с контролем загрузки Kendo MVC. И теперь мне нужно использовать это частичное представление несколько раз на одной странице .cshtml.

Столкнулся с проблемой конфликтов ID и DOM элемента управления... Как будто первая загрузка кендо проходит правильно, но вторая загрузка кендо не загружается в UI .

Поэтому я придумал динамический .Name (...), чтобы каждый раз при загрузке загрузки кендо он имел уникальный ID.

Теперь проблема возникла с методом контроллера. Здесь мне нужно получить объект IEnumerable(HttpPostedFileBase) при нажатии кнопки.

Я немного потерян. Любая подсказка очень полезна.

С уважением,

паван

Редактировать Для большей ясности Предположим, у нас есть частичное представление с текстовым полем и кнопкой. при нажатии кнопки нам нужно проверить текстовое поле. Но если одно и то же частичное представление нужно использовать несколько раз в одном и том же CSHTML, это то, с чем я сталкиваюсь сейчас.


person Pavan N    schedule 17.11.2014    source источник
comment
Почему при многократном частичном просмотре один и тот же id для управления загрузкой снова и снова? Просто попробуйте использовать разные ID и укажите на них Same Controller and Upload Action Methods, чтобы избежать конфликтов. Или любая другая проблема с этим? Если да, просто опубликуйте небольшой пример кода и дайте краткое пояснение по этому поводу. Поскольку ваш вопрос не дает четкой картины для ответа. :)   -  person RajeshKdev    schedule 17.11.2014
comment
@RJK Пожалуйста, смотрите отредактированный пост .. Проблема в том, что мне нужно использовать один и тот же частичный просмотр несколько раз на одной странице. Надеюсь, вы поняли мою проблему.   -  person Pavan N    schedule 18.11.2014


Ответы (2)


У меня была та же проблема, и я решил ее, изменив имя загрузки кендо с помощью метода HtmlAttributes (.HtmlAttributes(new {name="files" })). Посмотрите следующий код:

@(Html.Kendo().Upload()
                .Name("files_" + Model.ID)
                .HtmlAttributes(new {name="files" })
                .ShowFileList(true)
                .Messages(m => m.Select("Asociar documentos").StatusUploading("Cargando...").StatusUploaded("Cargado!").Retry("Reintentar").HeaderStatusUploading("Cargando...").HeaderStatusUploaded("Listo!"))
                .Multiple(true).Async(async => async.AutoUpload(true).Save("Upload", "PQRSF", new { id = Model.ID }))
                .Events(events => events
                                    .Complete("uploadFile_OnComplete")
                                    .Error("upload_OnError")
                                    .Upload("upload_OnUpload")
                        )
            )
person Juan Carlos Velez    schedule 11.02.2015
comment
Привет, Хуан, но все же это создает проблему конфликта DOM, когда вам нужно запустить в браузере. Я понял это, объединив имя родительского DIV через ViewBag. Чтобы в будущем не было конфликтов. Поэтому, когда мне нужно что-то изменить в управлении загрузкой, я просто передаю containerId. Чтобы в JS я мог понять, с каким ctrl мне нужно играть. Забыл этот случай... Представьте, что у вас есть текстовое поле и кнопка в cshtml. если вы используете один и тот же частичный просмотр несколько раз на своей странице. Возникает этот случай. Частичные представления не похожи на пользовательские/веб-элементы управления в asp.net. его WYGIWYG - person Pavan N; 12.02.2015
comment
Привет, Паван... Спасибо за комментарий. Частичные представления идеально подходят для использования в качестве настраиваемых элементов управления, но вам необходимо убедиться, что в DOM нет повторяющихся элементов с одинаковым идентификатором. Например: посмотрите, что имя элемента управления — files_+Model.Id, поэтому идентификатор элемента управления всегда отличается и зависит от модели. - person Juan Carlos Velez; 12.02.2015

У меня тоже была такая же проблема, но моя проблема была в MultiSelectFor(), и я решил ее, изменив идентификатор элемента кендо. Посмотрите следующий код:

Html.Kendo().MultiSelectFor(a => a.FeederIds).AutoClose(false)
                .HtmlAttributes(new { id = "VisitProgramFeederIds" })
person Mahdi Ahmadi    schedule 22.07.2018