2012-03-20 8 views
4

初めてここで質問します。DNN Setting.ascxでのFileUploadの使用は可能ですか?

私はDNNモジュールを作成しています。Setting.ascxでは、そこにFileUploadの任意の形式を追加しようとしています。私はASPのFileUploadとTelerikのRadUploadを追加するのに成功しましたが、ボタンをクリックするとアップロードされたファイルが保存され、空でもデータも保持されなくなりました。最初は間違ってコーディングしていると思っていましたが、View.ascxに追加した後、完全に動作します。もちろん、私はそれが欲しいところではありません。

私は、DNNでSetting.ascxがどのように動作するのかという問題があると思います。私はそれが干渉しているかもしれないように、それを表示するためにAJAXのフォームを使用していると信じています。しかし、言うことは難しい。私はそれに誰かがSetting.ascxはAJAXを使用していることを確認することができますが、そのボタンは、非同期ポストバックの原因をクリックしますか?ありがとう。

答えて

3

フォームにAJAX(以前はUpdatePanel経由で、今ではDNN 6.xのRadAjaxPanel経由)を使用していると思われます。これがアップロードの妨げになるのです。ほとんどのシナリオでは、ScriptManager.RegisterPostBackControlを呼び出すことで通常のポストバックに切り替えるだけですが、設定の場合、設定を保存するLinkButtonへの直接参照はありません。

ユーザーがファイルを選択した後でアップロードを行うには、おそらくフォームに独自のボタンを追加する必要があります。 DNN自身のUrlControlでは、そのようなシステムが使用されています。ここには、[参照]ボタンの横に[アップロード]ボタンがあります。 DNNにはさらに新しいDnnFilePickerコントロールがあり、必要なものをカプセル化することもできます。これらを使用するには、@ Registerというディレクティブを追加するだけです。たとえば:あなたはのUpdatePanelを使用する必要がある場合

<%@ 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

+0

は、私が代わりに登録を使用し、作業のものを得たが、UrlControlを使用すると、 アップロード%()合計 アップロードされたファイル原因:%を()総ファイル: アップロードファイル: 経過時間:推定時間:速度: - > が表示されます。それは起こるはずですか? – Mitchell

+0

何らかの理由で、デザイナーはsayind DnnFilePickerが存在しません。 DotNetNuke.Web.UI.WebControlsの下でDnnFilePieckerを見つけることもできません。DnnFilePicker – Mitchell

0

マン、ちょうどascxファイルの中に置く、あなたのASCXコントロール 外のUpdatePanelを入れないでください。それはあなたの問題を解決します!

0

私は次の操作を行って、この問題を解決することができました:

  • 私に次を追加するページ
  • に組み込まれて「保存」ボタンに頼るとは対照的に、私自身の送信ボタンを作成します。 LoadSettings()方法:

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

cmdUploadは、送信ボタンのIDです。

これをコンパイルするには、System.WebSystem.Web.Extensionsへの参照を追加する必要があります。

関連する問題