【问题标题】:Why is my Asp.Net Form arriving empty when I post from Page to Page?当我从一个页面发布到另一个页面时,为什么我的 Asp.Net 表单是空的?
【发布时间】:2011-01-26 21:04:50
【问题描述】:

我有以下 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"] 什么也没给我。

有什么线索吗?

【问题讨论】:

  • MVC 还是网络表单?看起来您正在尝试使用 MVC。
  • 你的目标表单代码是什么样的?你的断点在哪里?
  • 现在我的目标只有这个 并且我显然打破了唯一的代码行。我使用手表来验证我得到了什么。

标签: c# form-post forms http-post


【解决方案1】:

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

【讨论】:

  • 我正在使用网络表单。没有后面的代码,只是一个 dll 来处理一些数据库访问,剩下的就是脚本。
  • 非常感谢,这就是解决方案。
  • 您可以使用name 而不是id 属性,也可以在Asp.net Web 应用程序或webforms 中使用。
【解决方案2】:

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

【讨论】:

  • 我通常指责用户的愚蠢行为,现在愚蠢的是我。谢谢@manofseven2
【解决方案3】:

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

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

更多资源,更详细,对我有用

【讨论】:

  • 在您的第一个链接中重要指出,您可以在 RouteConfig.cs 中设置 settings.AutoRedirectMode = RedirectMode.Off 。没有必要完全禁用自动友好的 URL。
【解决方案4】:

另一种选择是在 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。

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多