如何在 .aspx 表单和 .ashx 处理程序之间传递值
How to pass values between .aspx form and .ashx handler
我想根据用户输入(宽度、高度等)绘制图像
我在 .aspx 页面中有我的表单,但我正在使用 ashx 处理程序绘制图像。
我有一个绘制图像的代码,但只能从预先分配的值中绘制图像。
现在我想做的是从我的 .aspx 表单中获取值
.aspx
<span>Width</span>
<asp:TextBox ID="input_width" Width="125" Text="600" runat="server" ClientIDMode="Static"></asp:TextBox><br/>
<span>Height</span>
<asp:TextBox ID="input_height" Width="125" Text="400" runat="server"></asp:TextBox>
.ashx.cs
int width = 600;
int height = 400;
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage((Image)bmp);
g.FillRectangle(Brushes.Red, 0f, 0f, bmp.Width, bmp.Height);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Png);
byte[] bajt = ms.ToArray();
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(bajt);
context.Response.Flush();
已经试过了
string _width = context.Request.QueryString.Get("input_width.Text");
int __width = Convert.ToInt32(_width);
但是这个值好像是null
有人帮帮我吗?
谢谢!
更新
<a href="ImageGen.ashx">Press here</a><br />
<img src="ImageGen.ashx" width="600" height="400"/>
您没有从您的 .aspx 页面发布(或获取)到您的 .ashx 处理程序,因为它不是这样工作的。这就是 context.Request.QueryString.Get("input_width.Text")
不起作用的原因。也不需要“.Text”,只需 "input_width".
您需要将参数附加到对 ashx 的调用中:
<img src="ImageGen.ashx?w=<%= input_width.Text %>&h=<%= input_height.Text %>" width="600" height="400"/>
并在您的处理程序中
string _width = context.Request.QueryString["w"];
int __width = Convert.ToInt32(_width);
我想根据用户输入(宽度、高度等)绘制图像
我在 .aspx 页面中有我的表单,但我正在使用 ashx 处理程序绘制图像。
我有一个绘制图像的代码,但只能从预先分配的值中绘制图像。
现在我想做的是从我的 .aspx 表单中获取值
.aspx
<span>Width</span>
<asp:TextBox ID="input_width" Width="125" Text="600" runat="server" ClientIDMode="Static"></asp:TextBox><br/>
<span>Height</span>
<asp:TextBox ID="input_height" Width="125" Text="400" runat="server"></asp:TextBox>
.ashx.cs
int width = 600;
int height = 400;
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage((Image)bmp);
g.FillRectangle(Brushes.Red, 0f, 0f, bmp.Width, bmp.Height);
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Png);
byte[] bajt = ms.ToArray();
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(bajt);
context.Response.Flush();
已经试过了
string _width = context.Request.QueryString.Get("input_width.Text");
int __width = Convert.ToInt32(_width);
但是这个值好像是null
有人帮帮我吗?
谢谢!
更新
<a href="ImageGen.ashx">Press here</a><br />
<img src="ImageGen.ashx" width="600" height="400"/>
您没有从您的 .aspx 页面发布(或获取)到您的 .ashx 处理程序,因为它不是这样工作的。这就是 context.Request.QueryString.Get("input_width.Text")
不起作用的原因。也不需要“.Text”,只需 "input_width".
您需要将参数附加到对 ashx 的调用中:
<img src="ImageGen.ashx?w=<%= input_width.Text %>&h=<%= input_height.Text %>" width="600" height="400"/>
并在您的处理程序中
string _width = context.Request.QueryString["w"];
int __width = Convert.ToInt32(_width);