2012-03-20 63 views
4

第一次在這裏問一個問題。在DNN Setting.ascx中使用FileUpload可能嗎?

我正在製作DNN模塊,並在Setting.ascx中試圖在其中添加任何形式的FileUpload。我成功添加了ASP的FileUpload以及Telerik的RadUpload,但是當我點擊一個按鈕時,我添加了保存並檢查上傳的文件是空的,不再保存任何數據。我認爲我開始時編碼錯誤,但是在將它添加到View.ascx中之後,它完美地工作。當然,這不是我想要的。

我相信問題可能是Setting.ascx如何在DNN中工作。我相信它正在使用AJAX的形式來顯示它,這可能會造成干擾。很難說。雖然我在任何人都可以確認Setting.ascx正在使用AJAX,並按鈕點擊導致異步回發?謝謝。

回答

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" /> 
+0

我得到「參考指令必須具有VirtualPath屬性,並且沒有其他屬性。」當使用它作爲參考。我不應該使用註冊嗎?哦,UrlControl或DnnFilePicker是否有任何OnClick事件? – Mitchell 2012-03-21 13:08:52

+0

我用註冊,而不是和得到的東西的工作,但使用UrlControl導致 上傳%()總 上傳的文件:%()的文件總數: 上傳文件: 經過時間:預計時間:速度: - > 出現。這是否應該發生? – Mitchell 2012-03-21 13:51:25

+0

由於某種原因,設計者是sayind DnnFilePicker不存在。我也似乎無法找到DotNetNuke.Web.UI.WebControls下的DnnFilePiecker。DnnFilePicker – Mitchell 2012-03-21 14:36:18

0

人,只是不要把你的UpdatePanel ascx控件 外部。如果你需要使用的UpdatePanel,把它放在裏面ASCX。這將解決您的問題!

0

我能夠通過執行以下操作來解決這個問題:

  • 創建我自己的提交按鈕,而不是依靠內置的網頁
  • 添加下面的「保存」按鈕,我LoadSettings()方法:

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

cmdUpload是我提交按鈕的ID。

您需要添加對System.WebSystem.Web.Extensions的引用才能編譯。