Я хочу, чтобы обработчик перенаправлял на страницу веб-форм, предварительно заполнив значения некоторых элементов управления в форме.
Я попытался установить свой текущий Request.Form data:
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 (объект Session будет null ). Вы должны указать IIS предоставить вам объект Session , добавив интерфейс маркера 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
}
...
}
}