【问题标题】:Get posted value In C# ASP.NET在 C# ASP.NET 中获取发布的值
【发布时间】:2012-03-31 13:13:06
【问题描述】:

我有一个动态表单,允许动态添加许多字段,

我知道如何使用:Request.Form["myField"] 获取 aspnet 中单个字段的值,但这里我有多个字段,我不知道这些字段的数量,因为它们是动态的

字段名称为“orders[]”

例如:

<form>
<input type="text" name="orders[]" value="order1" />
<input type="text" name="orders[]" value="order2" />
<input type="text" name="orders[]" value="order3" />
</form>

在 php 中, 我通过访问$_POST['orders'] 将值作为数组获取;

例如:

$orders = $_POST['orders'];
foreach($orders as $order){
 //execute ...
}

如何在 c# 中做到这一点?

【问题讨论】:

标签: c# asp.net http post


【解决方案1】:

使用Request.Form.GetValues

Request.Form 是一个NameValueCollection,一个可以在同一键下存储项目集合的对象,ToString 以 CSV 格式显示值。

标记:

<input type="text" name="postField[]" />
<input type="text" name="postField[]" />
<input type="text" name="postField[]" />
<input type="text" name="postField[]" />

<asp:Button Text="text" runat="server" OnClick="ClickEv" />

后面的代码:

protected void ClickEv(object sender, EventArgs e)
{
    var postedValues = Request.Form.GetValues("postField[]");

    foreach (var value in postedValues)
    {

    }
}

【讨论】:

    【解决方案2】:

    您将使用Request.Form[]。或者,如果您的表单和字段有 runat="server" 和 id,您可以只使用代码隐藏中的 id 和 .Text() 方法来访问其值。

    【讨论】:

    • NO 我不能使用 runat 服务器,因为这些字段可能会添加到客户端
    • 没关系,您应该仍然可以使用前面提到的Request.Form[] 来提取所有已发布的表单字段及其值。
    • 是的,我可以使用它,但问题是所有字段的名称都相同 orders[] 所以 Request.Form["orders"] 将得到 NULL
    • 您确实应该详细说明您使用 ASP.NET WebForms 和 C# 的原因,但不要利用它的默认功能,例如使用带有 ID 和 runat 的 ASP.NET WebControls 的 runat="server" 表单="server" 这样您就可以通过它们的 ID 在代码隐藏中简单地访问它们。要回答您的评论,您需要在每个输入上添加一个ID 属性,以便通过Request.Form[] 访问它。
    • 我上面提到了字段是动态的,所以字段是在客户端生成的,每次字段的数量都会不同,这种情况下无法使用服务器端控件
    【解决方案3】:

    您可以使用 Request 对象访问发送回服务器的所有内容。

    Request.Form.Items
    

    是一个包含您要查找的项目的集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      相关资源
      最近更新 更多