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