4

我有以下 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

4 回答 4

5

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

于 2010-03-12T15:18:25.393 回答
1

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

于 2013-06-04T10:41:25.733 回答
1

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

  • 在 Web 窗体项目中 禁用自动友好 URL
    • settings.AutoRedirectMode = RedirectMode.Off; // 在 RouteConfig.cs 中
  • 如果你可以的话:
    • 从表单元素中删除 action="CILandingPage.aspx"
    • 放一个 asp:button 而不是普通按钮
    • 在你的 asp:button 上设置PostBackUrl ="~/CILandingPage.aspx"

更多资源和更多细节对我有用

于 2016-11-17T08:40:33.827 回答
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。

于 2017-01-18T21:31:37.213 回答