我希望有一个处理程序重定向到窗体上的某些控件的值的web的表单页面,预填充。
我尝试设置我目前的Request.Form数据:
if (theyWantToDoSomething)
{
//pre-fill form values
context.Request.Form["TextBox1"] = "test";
context.Request.Form["ComboBox1"] = "test 2";
context.Request.Form["TextBox2"] = GetTheTextForTheThing();
//tell the client to go there
context.Response.Redirect("~/SomeWebForm.aspx");
return;
}
但我得到一个例外, 形式值是只读的。
什么是给客户端发送到另一个页面,预填充表单数据的方法吗?
回答
我使用的会话状态来存储值。 需要注意的是很重要的,在默认情况处理程序并不需要访问会话 (Session对象为null)。 你必须告诉IIS给你的会话中加入的对象IRequiresSessionState标记接口到您的处理程序类:
public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
...
if (theyWantToDoSomething)
{
//pre-fill form values
context.Session["thing1"] = "test";
context.Session["thing2"] = "test 2";
context.Session["thing3"] = GetTheTextForTheThing();
//tell the client to go there
context.Response.Redirect("~/SomeWebForm.aspx");
return; //not strictly needed, since Redirect ends processing
}
...
}
}