【问题标题】:ASP.NET WebForms form not being posted - why?ASP.NET WebForms 表单未发布 - 为什么?
【发布时间】:2013-08-01 05:10:11
【问题描述】:

虽然我不认为自己是一名网络程序员,但我已经完成了大量的网络编程,所以我几乎不好意思问下面的代码有什么问题。我必须缺少一些关于 ASP.NET 的基本知识。

我有两个页面,source.aspx 和destination.aspx:

source.aspx - html:

<body>
<form id="form1" action="destination.aspx" method="post" runat="server">
    <input id="Text1" type="text" />
    <input id="Text2" type="text" />
    <input id="Checkbox1" type="checkbox" />
    <input id="Submit1" type="submit" value="submit" />
</form>
</body>

destination.aspx - 隐藏代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        // Below variable gets assigned null.
        string text1 = Request.Form["Text1"];
    }

当我提交source.aspx 表单时,一旦到达destination.aspx 表单,FORM 变量中就没有任何信息。我认为表单 'runat="server" ' 将确保我最终进入 ASP.NET 页面管道,实际上我可以单步执行此代码。除了视图状态,没有 POSTed 表单变量,并且 PARAMs 集合也没有任何与控件数据对应的内容,甚至没有与修饰控件名称对应的内容。问题是,发生了什么让我的 POSTed 变量“消失”,至少到目标页面?

我不是在寻找如何使这项工作的替代方案(即使用 runat="server" 制作控件服务器控件等)。我可以解决问题。我要确定的是 ASP.NET 是什么使我的控件看起来无法被目标页面接收。谢谢 - 我认为我对 HTTP 理解得很好,但似乎有一点我没有看到的 ASP.NET 的花招。

【问题讨论】:

  • 所以你有不同的页面:Source.aspx & destination.aspx。在提交 source.aspx 时,您需要检查 destination.aspx 中的表单值?

标签: asp.net http webforms


【解决方案1】:

您可以从表单标记中删除 runat="server",因为您想选择退出 ASP.NET 为您提供的服务器控件。您基本上正确地认为这应该可以在不需要所有 ASP.NET 页面处理位的情况下工作。

这是您需要做的一个小改动 - 您需要在输入控件上使用“名称”而不是“id”,以便它们出现在表单集合中。这是一个微妙的事情,但我相信它不是 ASP.NET 独有的 - name 属性指定将值与 POST 变量集合中的什么相关联。

请咨询HTML input - name vs. id,了解有关 id 与 name 的更多信息

祝你好运

【讨论】:

  • 谢谢,这非常有帮助,尽管我认为 name 属性已被弃用。我会试一试。已 +1 - 谢谢!
【解决方案2】:

Request.Form 使用元素的名称属性。因此,您应该为每个 html 元素写入名称属性。

<body>
<form id="form1" action="destination.aspx" method="post" runat="server">
    <input id="Text1" name="Text1" type="text" />
    <input id="Text2" name="Text2" type="text" />
    <input id="Checkbox1" name="Checkbox1" type="checkbox" />
    <input id="Submit1" type="submit" value="submit" />
</form>
</body>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多