ASP.NETでFileUploadコントロールを使用しようとしています
現在の名前空間のセットアップは次のとおりです。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
そして、私のクラス内では、私はちょうど使用しています:
FileUpload fileUpload = new FileUpload();
ただし、通常はFileUploadの一部である属性は、.HasFileなどのように使用できないようです。コードビハインドでButtonクリックメソッドを作成しようとしています。
誰が理由を知っていますか?
ASP.NETコントロールは、aspxマークアップファイルに配置する必要があります。それは彼らと働く好ましい方法です。したがって、FileUpload
コントロールをページに追加します。 ID
およびrunat
を含むすべての必須属性があることを確認してください。
<asp:FileUpload ID="FileUpload1" runat="server" />
FileUpload1
のインスタンスは、ページの部分クラスである自動生成/更新された* .designer.csファイルに自動的に作成されます。通常、中身を気にする必要はありません。aspxページのコントロールが自動的にインスタンス化されると仮定するだけです。
ポストバックを行うボタンを追加します。
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
次に、コードのある* .aspx.csファイルに移動し、ボタンクリックハンドラーを追加します。 C#では、次のようになります。
protected void Button1_Click(object sender, EventArgs e)
{
if (this.FileUpload1.HasFile)
{
this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
}
}
以上です。すべて正常に機能するはずです。
コードビハインドでの私のソリューションは:
System.Web.UI.WebControls.FileUpload fileUpload;
理由はわかりませんが、FileUploadをSystem.Web.UI.WebControlsなしで使用している場合、それはYourProject.FileUploadではなくSystem.Web .UI.WebControls.FileUpload。
コードビハインドファイルでFileUpload
をインスタンス化する代わりに、マークアップファイル(.aspxファイル)で宣言するだけです。
<asp:FileUpload ID="fileUpload" runat="server" />
その後、HasFile
などのコントロールのすべてのプロパティにアクセスできます。
コードビハインドからFileUploadコントロールを追加すると、HasFileプロパティが使用可能な場合(たとえば、Clickイベントで)正常に機能するはずです。
プロパティが使用できないように見える場合(コンパイラエラーとして、またはintellisenseを介して)、おそらくあなたが思っているとは異なる変数を参照しています。
オブジェクトに対してインテリジェンスが機能しない場合、通常、作業している行より上のクラスのどこかにエラーがあることに気付きました。
もう1つのオプションは、FileUploadオブジェクトをインスタンス変数としてインスタンス化していないことです。コードを確認してください:
FileUpload fileUpload = new FileUpload();
コードビハインドの関数内にありません。