在ashx页面中分配隐藏字段值?

时间:2012-07-23 19:25:26

标签: c# filehandler

我需要在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"/>

2 个答案:

答案 0 :(得分:1)

(除非我非常错误..)ASHX是一个Web服务,而不是一些代码隐藏。 如果要获取该字段的值,则需要将表单发布到.ASHX文件的相应URL,或使用AJAX。

如果您想返回数据,我建议您使用AJAX。

编辑:根据MSDN,我的陈述是正确的。 .ASHX适用于没有UI的HttpHandler。

  

通用Web处理程序(* .ashx)所有Web的默认HTTP处理程序   没有UI且包含@WebHandler的处理程序   指令。

如何使用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;
}

注意:另请参阅https://stackoverflow.com/a/8758614/690178以使用AJAX上传文件。

答案 1 :(得分:0)

ASHX只是一个原始的ASP.NET Web处理程序文件。这意味着您实现了一个定义属性IsReusable的IHttpHandler接口和一个方法ProcessRequest,该接口获取在HttpContext参数中传递的HttpRequest和HttpReponse。典型的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 Pages或ASCX Controls。