提交到服务器的表单元素一定要加上"name"元素
每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用,通过访问context.Request获得访问者的请求参数等。例子中就取到了UserName参数.
然后在ProcessRequest中通过context.Response向浏览器发回数据给浏览器。ProcessRequest结束之时就是服务器为这个浏览者本次访问服务完成之时,浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给Javascript操作Dom用的,name才是提交给服务器用的。在服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。通过context.Response.Write向浏览器输出处理后的显示HTML内容。
新建一个ashx文件, ProcessRequest中写
context.Response.ContentType = "text/html";//html表示浏览器识别成html语言
string username = context.Request["UserName"];//取得用户提交过来的name为UserName的表单的值
context.Response.Write(username + 你好);
建立一个html页面,建立一个form,设定action指向刚才写的ashx文件,那么点击submit的时候,就会把表单里面的参数都传递个Hello1.ashx文件了
<form action="Hello1.ashx">
姓名<input type="text" name="UserName"/><input type="submit" value="提交"/>
</form>
但是这样做的话,启动浏览器从html跳转到ashx页面,之前的用户名和输入框就没有了,解决这个问题没有太好的办法,只好把先前的样子在ashx文件中再画出来,见程序
context.Response.ContentType = "text/html";
string UserName = context.Request["UserName"];
context.Response.Write(@"<form action='Hello1.ashx'>姓名<input type='text' name='UserName'/><input type='submit' value='提交'/></form>");//这一行操作
是把先前的html原有的东西画出来,把之前的html代码,写到context.Response.Write就可以了(@的意思是多行文本不被分开识别)
context.Response.Write(UserName+"你好!");