当我从Page发布到Page时,为什么我的Asp.Net表格空了?

时间:2010-03-12 15:12:36

标签: c# form-post html-form-post

我有以下HTML代码

<%@ 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>

目标页面即将出现,但它接收的表单是空的。我在target.aspx页面上有一个断点,虽然我可以看到一个表单,但它的键是空的,而Request [“txtTextField”]却什么也没给我。

有什么线索?

4 个答案:

答案 0 :(得分:3)

如果您使用的是ASP.NET MVC,则需要使用“name”属性而不是“id”设置输入名称。

答案 1 :(得分:1)

如果您像我一样使用ASP.NET 4.5,请使用以下提示

  • 在Web窗体项目中禁用自动友好网址
    • settings.AutoRedirectMode = RedirectMode.Off; //在RouteConfig.cs
  • 如果可以:
    • 删除操作=&#34; CILandingPage.aspx&#34;来自表单元素
    • 放一个asp:按钮而不是普通按钮
    • 设置 PostBackUrl =&#34;〜/ CILandingPage.aspx&#34;在你的asp:按钮

更多资源以及对我有用的更多细节

答案 2 :(得分:0)

您可能会重置事件处理程序中的表单值(例如page_load)。

答案 3 :(得分:0)

另一种选择是在Global.asax.cs上的Application_BeginRequest中捕获您的Request.Form []数据:

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"];
    }
}

问题是表单数据在由friendlyUrls应用的自动重定向中丢失 - 如果您将该数据存储为表单数据之外的其他内容,则无需关闭friendlyUrls或将AutoRedirectMode设置为RedirectMode.Off。 / p>