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 是一个网络服务,而不是一些代码隐藏。如果要获取该字段的值,则需要将表单发布到 .ASHX 文件的相应 URL,或者使用 AJAX。

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

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

通用 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 处理程序文件。这意味着您实现了一个 IHttpHandler 接口,该接口定义了一个属性IsReusable和一个方法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。

于 2012-07-23T19:58:06.547 回答