Возможно ли использование FileUpload в DNN Setting.ascx? - PullRequest
4 голосов
/ 21 марта 2012

впервые задаю вопрос здесь.

Я делаю модуль DNN и в Setting.ascx я пытаюсь добавить туда любую форму FileUpload.Я успешно добавил ASPU FileUpload, а также TeleUk RadUpload, но когда я нажимал кнопку, которую я добавил, чтобы сохранить и проверить загруженный файл, он пуст и больше не содержит никаких данных.Сначала я думал, что кодирую это неправильно, но после добавления в View.ascx он работает отлично.Конечно, это не то место, где я хочу.

Я считаю, что проблема может заключаться в том, как Setting.ascx работает в DNN.Я полагаю, что он использует форму AJAX для отображения, чтобы это могло мешать.Трудно сказать, хотя.В то время как я в этом, может ли кто-нибудь подтвердить, что Setting.ascx использует AJAX и что нажатия кнопок вызывают асинхронные обратные передачи?Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

Вы правы, полагая, что форма использует AJAX (ранее через UpdatePanel, теперь через RadAjaxPanel в DNN 6.x), и именно это мешает загрузке.В большинстве сценариев вы просто переключаетесь на обычную обратную передачу, вызывая ScriptManager.RegisterPostBackControl, но в случае настроек у вас нет прямой ссылки на LinkButton, который сохраняет настройки.

Возможно, вам потребуется добавить собственную кнопку в форму, чтобы выполнить загрузку после того, как пользователь выбрал файл.DNN UrlControl использует такую ​​систему, где рядом с кнопкой «Обзор» находится кнопка «Загрузить».DNN также имеет более новый элемент управления DnnFilePicker, который также может инкапсулировать то, что вы хотите.Вам просто нужно добавить директиву @ Register, чтобы использовать их.Например:

<%@ Reference tagPrefix="dnn" tagName="UrlControl" Src="~/controls/URLControl.ascx" %>
<%@ Reference tagPrefix="dnn" Assembly="DotNetNuke.Web" Namespace="DotNetNuke.Web.UI.WebControls" %>

<dnn:UrlControl runat="server" ID="FileUpload" 
                ShowLog="false"
                ShowNewWindow="false"
                ShowTrack="false"
                ShowImages="false"
                ShowNone="false"
                ShowTabs="false"
                ShowUrls="false"
                ShowUsers="false"
                ShowFiles="false"
                ShowUpLoad="true" />

<dnn:DnnFilePicker runat="server" ID="FilePicker"
                   FileFilter="jpg,png,gif" />
0 голосов
/ 30 июня 2017

Я смог решить эту проблему, выполнив следующие действия:

  • Создайте мою собственную кнопку отправки, в отличие от кнопки «Сохранить», встроенной в страницу
  • Добавление следующего к моему LoadSettings() методу:

    ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(cmdUpload);

Где cmdUpload - идентификатор моей кнопки отправки.

Вам нужно будет добавить ссылку на System.Web и System.Web.Extensions для компиляции.

0 голосов
/ 05 декабря 2013

Человек, просто не ставьте панель обновлений вне вашего контроля ascx Если вам нужно использовать updatepanel, поместите его в ascx. Это решит вашу проблему!

...