第一次在这里问一个问题。
我正在创建一个DNN模块,而在Setting.ascx中,我正在尝试添加任何形式的FileUpload。我成功地添加了ASP的FileUpload以及Telerik的RadUpload,但是当我点击一个按钮时,我添加了保存并检查上传的文件它是空的,不再保存任何数据。我认为我最初编码错误,但在将其添加到View.ascx之后却完美无缺。当然,这不是我想要的地方。
我认为问题可能是Setting.ascx在DNN中的工作方式。我相信它正在使用一种形式的AJAX来显示它,这可能会产生干扰。虽然很难说。我可以在任何人确认Setting.ascx正在使用AJAX并且按钮点击导致异步回发?感谢。
答案 0 :(得分:3)
您认为该表单使用AJAX(以前通过UpdatePanel
,现在通过DNN 6.x中的RadAjaxPanel
),这是正确的,这就是干扰上传的内容。在大多数情况下,您只需拨打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" />
答案 1 :(得分:0)
伙计,只是不要在你的ascx控件之外放置一个updatepanel 如果您需要使用updatepanel,请将其放在ascx中。这将解决您的问题!
答案 2 :(得分:0)
通过执行以下操作,我能够解决此问题:
将以下内容添加到我的LoadSettings()
方法中:
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(cmdUpload);
cmdUpload
是我提交按钮的ID。
您需要添加对System.Web
和System.Web.Extensions
的引用才能进行编译。