从特定表单请求参数

本文关键字:请求 参数 表单 | 更新日期: 2023-09-27 18:02:02

这是我的代码,我想从请求中获取值但它会检索所有值,我不希望它那样做。请看一看。我正在使用c#。

    foreach (string itemm in Request.Params)
    {
        Response.Write(itemm.Substring(itemm.LastIndexOf("$") + 1) + "<br/>");
    }

这检索所有的值,但我有2个不同的形式,我只想从form1的值为例。这可能吗?我已经执行了一个搜索,但我找不到任何答案

从特定表单请求参数

似乎是Asp。Net中,只有一个表单元素在服务器端运行。这意味着我们可以在ASP中使用多个表单标签。Net HTML,但其中只有一个可以是服务器端。其余的表单必须是客户端HTML表单

所以所有的服务器控件和用户控件都必须嵌套在表单中才能工作。因此,当检查回发时,服务器控件名称-值对总是来自主 <form runat="server">中的输入元素。

为了回答你最初的问题,为了区分一个帖子,你总是可以在每个表单中添加一个隐藏的输入,并在期望的值上切换/大小写。此外,您可以对输入字段

使用命名约定。

aspx

<!DOCTYPE html>
<html lang="en">
    <head runat="server">
    </head>
    <body>
       <form id="form1" runat="server">
           <input type="hidden" name="form.origin" value="first" />
           <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
       </form>
       <form id="form2" method="POST">
           <input type="hidden" name="form.origin" value="seccond" />
           <input type="submit" value="Post Second" />
       </form>
    </body>
</html>

代码后面

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e) {
        switch (Request.Form["form.origin"]) {
            case "first":
                // first for has asp.net spesifics. Because its the main runat server form
                foreach (var key in Request.Form.AllKeys) {
                    Response.Write(string.Format("{0}: {1}", key, Request.Form[key]) + "<br/>");
                }                    break;
            case "second":
                //seccond form contains only values from the post.
                foreach (var key in Request.Form.AllKeys) {
                    Response.Write(string.Format("{0}: {1}", key, Request.Form[key]) + "<br/>");
                }                    break;
            default:
                break;
        }
    }
    protected void Button1_Click(object sender, EventArgs e) {
    }

}