2

ashx ページの非表示フィールド値にファイル名変数を割り当てる必要があります。ashx ページの非表示フィールドに値を割り当てるにはどうすればよいですか?

.ashx ページ

public void ProcessRequest(HttpContext context)
{
    var file = context.Request.Files[0];
  //here i need to pass this file name in hidden field value
}

これは隠しファイルが存在するaspxページです

  <asp:HiddenField ID="hdnFileName" runat="server"/>
4

2 に答える 2

1

(私が非常に間違っていない限り..) ASHX は Web サービスであり、コード ビハインドではありません。そのフィールドの値を取得する場合は、フォームを .ASHX ファイルの対応する URL に投稿するか、AJAX を使用する必要があります。

データを返したい場合は、AJAX を使用することをお勧めします。

編集: MSDNによると、私の声明は正しいです。.ASHX は、UI を持たない HttpHandlers 用です。

汎用 Web ハンドラー (*.ashx) UI を持たず、@ WebHandler ディレクティブを含むすべての Web ハンドラーの既定の HTTP ハンドラー。

AJAX で投稿する方法の例:

$(function(){
    $.ajax({
            url:'location of your ashx goes here',
            type: 'post',
            success: function(data){
            $("#hdnFileName").val(data);
     }
};

ASHX は次のデータを返します。

public string ProcessRequest(HttpContext context)
{
    var file = context.Request.Files[0];
  //here i need to pass this file name in hidden field value
    return fileName;
}

注: AJAX を使用したファイルのアップロードについては、 https ://stackoverflow.com/a/8758614/690178 も参照してください。

于 2012-07-23T19:32:05.337 に答える
0

ASHX は生の ASP.NET Web ハンドラ ファイルです。つまり、HttpContext 引数で渡される HttpRequest と HttpReponse を取得するプロパティIsReusableとメソッドを定義する IHttpHandler インターフェイスを実装します。ProcessRequest典型的な ASHX の実装は、次のようになります。

public class Handler : IHttpHandler
{
    public void ProcessRequest (HttpContext context) 
    {
        // Access the raw HttpRequest and HttpResponse via context
    }

    public bool IsReusable 
    {
        get 
        {
            return false; // Define if ASP.NET may reuse instance for subsequent requests
        }
    }
}

したがって、HTML やビューの抽象化を欠いている隠しフィールドをハンドラ ファイルに作成することはありません。あなたができることは、生のHTML出力を文字列として応答に書き込み、隠しフィールドを宣言することです

<input type="hidden" name="somename" />

ASHX ハンドラーでこれを行うことはお勧めしません。HTML 出力が必要な場合は、ASPX ページまたは ASCX コントロールを参照してください。

于 2012-07-23T19:58:06.547 に答える