4

第一次在这里问问题。

我正在制作一个 DNN 模块,并在 Setting.ascx 中尝试在其中添加任何形式的 FileUpload。我成功地添加了 ASP 的 FileUpload 和 Telerik 的 RadUpload,但是当我单击一个按钮时,我添加了保存并检查上传的文件,它是空的,不再保存任何数据。我一开始以为我编码错了,但是在将它添加到 View.ascx 之后,它却完美地工作了。当然,这不是我想要的。

我相信问题可能是 Setting.ascx 在 DNN 中的工作方式。我相信它使用一种 AJAX 形式来显示它,因此可能会产生干扰。不过很难说。当我在这里时,任何人都可以确认 Setting.ascx 正在使用 AJAX 并且该按钮单击会导致异步回发吗?谢谢。

4

3 回答 3

3

您认为表单使用 AJAX(以前是 via UpdatePanel,现在RadAjaxPanel是 DNN 6.x 中的 via)是正确的,这就是干扰上传的原因。在大多数情况下,您只需通过调用切换到常规回发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" />
于 2012-03-21T12:48:25.697 回答
0

伙计,不要把更新面板放在你的 ascx 控件之外 如果你需要使用更新面板,把它放在 ascx 里面。这将解决您的问题!

于 2013-12-05T11:29:38.850 回答
0

我能够通过执行以下操作来解决此问题:

  • 创建我自己的提交按钮,而不是依赖页面中内置的“保存”按钮
  • 将以下内容添加到我的LoadSettings()方法中:

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

cmdUpload我的提交按钮的 ID在哪里。

您将需要添加对它的引用System.WebSystem.Web.Extensions进行编译。

于 2017-06-30T15:55:24.230 回答