gpt4 book ai didi

.net - 在 Request.Form 中搜索控件/解析 NameValueCollection

转载 作者:行者123 更新时间:2023-12-01 08:59:44 25 4
gpt4 key购买 nike

我正在使用 Request.Form 搜索控件名称。

当然,我知道您可以使用 AllKeys 遍历所有值,您也可以使用 Form["controlName"]。

然而,我的一些控件名称是动态的,能够执行以下操作会很有用:

1)获取集合中以特定前缀开头的控件子集2) 搜索与模式匹配的控件名称,就像使用正则表达式一样。

但我看不到做这样的事情。

注意,我知道如何将 FindControl 用于 ASP.NET 控件,但这些是标准的 HTML。

最佳答案

如果您使用的是 C#3,则可以使用 LINQ 和扩展方法以非常好的方式实现此目的。首先你需要创建一个由 Bryan Watts 设计的扩展方法在 this thread :

public static IEnumerable<KeyValuePair<string, string>> ToPairs(this NameValueCollection collection)
{
if (collection == null)
{
throw new ArgumentNullException("collection");
}
return collection.Cast<string>().Select(key => new KeyValuePair<string, string>(key, collection[key]));
}

现在,假设您有这样一个表单:

<form id="form1" runat="server">
<div>
<input type="text" name="XXX_Name" value="Harold Pinter" />
<input type="text" name="XXX_Email" value="harold@example.com" />
<input type="text" name="XXX_Phone" value="1234 5454 5454" />

<input type="text" name="YYY_Name" value="AN. Other" />
<input type="text" name="YYY_Email" value="another@example.com" />
<input type="text" name="YYY_Phone" value="8383 3434 3434" />

<input type="submit" value="submit button" />
</div>
</form>

您可以在您的代码隐藏中执行此操作:

protected void Page_Load(object sender, EventArgs e)
{
var data = Request.Form.ToPairs().Where(k => k.Key.StartsWith("XXX_"));

foreach (var item in data)
{
Response.Write(String.Format("{0} = '{1}', ", item.Key, item.Value));
}
}

哪个会输出:

XXX_Name = 'Harold Pinter'
XXX_Email = 'harold@example.com'
XXX_Phone = '1234 5454 5454'

关于.net - 在 Request.Form 中搜索控件/解析 NameValueCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com