- - PR -
[ASP.NET] VS2005でマスターページと、アップロード
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-03-10 16:32
[はじめに]
スレッドを分けようか迷いましたが、かけ離れているわけではないので、 同一スレッドに書き込みます。 [質問内容] 1.ファイルのアップロード この会議室の過去ログを調べてもファイルのアップロードを行うには、 ファイル選択ダイアログと実際のアップロード(submit)を行うボタンが違う のですが、この2つを1つのボタンで実装することは可能でしょうか? クライアント:ボタンクリック ↓ クライアント:ファイルダイアログ表示→ファイル選択 ↓ サーバー :ファイルアップロード処理 なおVS2005のファイルアップロードコントロールは、ファイルのフルパスを 表示する所が出るため、使えないのです。 #クライアントはIEのみですのでScriptを使う場合、 #JavaScriptだろうと、VBScriptだろうと問題ありません。 #ただしバージョンは不明(W2KProのデフォルトはIE5.0以上なら可かな?) 2.VS2005のマスターページを使用している状態で、enctype="multipart/form-data"を アップロードを関係ないところで指定しても大丈夫かどうか。 マスターページにfromタグが1つある状態になるため、他のまったく関係ない ページにも、enctype="multipart/form-data"が設定されてても問題ないか? 動作することは確認しましたがなんとなく、気になったので^^; よろしくお願いします。 | ||||
|
投稿日時: 2006-03-10 17:00
> ファイル選択ダイアログと実際のアップロード(submit)を行うボタンが違う
> のですが、この2つを1つのボタンで実装することは可能でしょうか? できないと思います。 Inputタグを使わない、ということですよね。たぶん無理かと。 > マスターページにfromタグが1つある状態になるため、他のまったく関係ない > ページにも、enctype="multipart/form-data"が設定されてても問題ないか? ファイルアップロードコントロールを利用する場合は、コンテンツページの ほうにコントロールを貼り付けると自動的にそのページが表示されるときだけ enctype="multipart/form-data"が設定されますね。 各コンテンツページからマスターページの設定を変更することは可能なので 必要ないところには設定しなければいいと思います。 | ||||
|
投稿日時: 2006-03-10 17:28
横から失礼します。
submitを行うボタンは非表示にしておいて、 aspxファイルには、 <asp:button id=btnAdd runat="server" Font-Size="xx-small" Visible="false" Text="追加"></asp:button> <INPUT id=txtAttachment type=file size=50 name=B runat="Server"> というふうに、INPUTとボタンを配置しています。 Page_Loadで、 txtAttachment.Attributes.Add("OnPropertyChange", GetPostBackEventReference(btnAdd)); を記述します。 これは、ファイルの選択でファイルを選択して、開くボタンが押されたら、ボタンbtnAddを実行されるようにしています。 このようにすると、1つのボタンで処理が行えるようになります。 [ メッセージ編集済み 編集者: OpS 編集日時 2006-03-10 17:31 ] [ メッセージ編集済み 編集者: OpS 編集日時 2006-03-10 17:46 ] | ||||
|
投稿日時: 2006-03-11 06:42
このテクニック便利ですよね。子ウィンドウから親ウィンドウをポストバックさせるとかいろんな処理に応用できます。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2006-03-13 12:59
マルチレス失礼します。
>どっとねっとふぁんさん CreateObjectでコモンダイアログ出せないかと思ったのですが、 よく考えたら、セキュリティーホールになっちゃいますよね。 ファイルアップロードコントロールを貼り付けた場合、そのページだけ enctypeが設定されるのを確認しました。 >OpSさん OnPropertyChangeなんてあったんですね。しらなかった。 それと、GetPostBackEventReferenceは、ASP.NET 2.0では ClientScriptManagerクラスの下のヤツが推奨されていて、 引数がちょっと変わったみたいです。 でも、動作できました。ありがとうございます。 >Accessさん 確かにこのテクニック便利ですね。今までの別のプロジェクトにも応用が効いたと 思います。奥が深い。 | ||||
|
投稿日時: 2009-01-16 09:33
はじめまして
マスターページを利用しており、同様に一部のページでファイルアップロードがあるためこちらのスレッドを参考にさせていただきました。 >ファイルアップロードコントロールを利用する場合は、コンテンツページの >ほうにコントロールを貼り付けると自動的にそのページが表示されるときだけ >enctype="multipart/form-data"が設定されますね。 私の場合は、ファイルアップロードコントロールが配置されていないページにも影響してしまうので、どっとねっとふぁんさんの下記の手順をとりました >各コンテンツページからマスターページの設定を変更することは可能なので >必要ないところには設定しなければいいと思います。 ファイルアップロードコントロールが配置されているページのロード処理で下記のコードを実装しました。 無事、ファイルアップロードコントロールが配置されているページのみEnctypeが設定されていました。 コード(C#) HtmlForm frm = (HtmlForm)Page.Master.FindControl("form1"); frm.Enctype = "multipart/form-data"; おかげさまで解決できました。 ありがとうございます。 |
1