问题
I have the following HTML Code
<%@ Page Language="C#" %>
<html>
<head>
<title></title>
</head>
<body>
<form id="frmSystem" method="post" action="target.aspx">
<input id="txtTextField" type="text" />
<input id="btnPost" value="Submit" onclick="javascript:frmSystem.submit();" type="button" />
</form>
</body>
</html>
The target Page is coming up but the form that it is receiving is empty. I have a break point on my target.aspx page and while I can see a form, it's keys are empty and Request["txtTextField"] gives me nothing.
Any clue why?
回答1:
If you are using ASP.NET MVC, the input names need to be set with the "name" attribute rather than "id".
回答2:
You probably reset the form value in event handlers (such as page_load).
回答3:
If you are using ASP.NET 4.5 like me, use below hints
- Disable auto Friendly URLs in a Web Form project
- settings.AutoRedirectMode = RedirectMode.Off; // in RouteConfig.cs
- if you can:
- remove action="CILandingPage.aspx" from form element
- put a asp:button instead of normal button
- set PostBackUrl="~/CILandingPage.aspx" on your asp:button
more resources with more detail that was useful to me
- Disable auto Friendly URLs in a Web Form project
- http://www.mikesdotnetting.com request-form-is-empty-when-posting-to-aspx-page
回答4:
Another option is to capture your Request.Form[] data in Application_BeginRequest on the Global.asax.cs:
protected void Application_BeginRequest(object sender, EventArgs e)
{
//capture form data and preserve in query string
if (Request.Form["txtTextField"]!= null)
{
Response.Redirect(Request.RawUrl + "?txtTextField="
+ Request.Form["txtTextField"]);
}
//or preserve in Session variable
if(Request.Form["txtTextField"]!=null)
{
Session["txtTextField"]=Request.Form["txtTextField"];
}
}
The problem is that the form data is lost on the automatic redirect which is applied by friendlyUrls - if you store that data as something other than form data, it is unnecessary to turn off friendlyUrls or set AutoRedirectMode to RedirectMode.Off.
来源:https://stackoverflow.com/questions/2433624/why-is-my-asp-net-form-arriving-empty-when-i-post-from-page-to-page