在DNN中使用FileUpload Setting.ascx可能吗?

时间:2012-03-20 20:05:52

标签: file-upload asynchronous dotnetnuke setting

第一次在这里问一个问题。

我正在创建一个DNN模块,而在Setting.ascx中,我正在尝试添加任何形式的FileUpload。我成功地添加了ASP的FileUpload以及Telerik的RadUpload,但是当我点击一个按钮时,我添加了保存并检查上传的文件它是空的,不再保存任何数据。我认为我最初编码错误,但在将其添加到View.ascx之后却完美无缺。当然,这不是我想要的地方。

我认为问题可能是Setting.ascx在DNN中的工作方式。我相信它正在使用一种形式的AJAX来显示它,这可能会产生干扰。虽然很难说。我可以在任何人确认Setting.ascx正在使用AJAX并且按钮点击导致异步回发?感谢。

3 个答案:

答案 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)

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

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

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

cmdUpload是我提交按钮的ID。

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