Mutliple复选框,具有相同的名称属性循环

Jay*_*zzi 1 c# forms iteration ashx

我有一个html表单提交给C#ashx处理程序,我希望将插入/更新数据库

我用PHP和Coldfusion编写了这个,但我无法弄清楚如何在C#中做到这一点

HTML表单

     <form id="copyto">
    <input type="hidden" name="operation" value="update" />
    <label><input type="checkbox" name="children[]" checked="checked" value="001">
Andrew Regan</label>

    <label><input type="checkbox" name="children[]" checked="checked" value="101">
Arthur Regan, III</label>

    <input type="checkbox" name="children[]" checked="checked" value="968">
Tim Reagan
    </form>
Run Code Online (Sandbox Code Playgroud)

C#ASHX处理程序

foreach(string key in context.Request.Params["children"]) 
{
    ListDictionary updateParams = new ListDictionary();
    updateParams.Add("rowid", key);
    string sSql = @"insert into temp select * from children where c.id = :rowid";
    dbi.ExecuteNonQuerySql(sSql, updateParams);

}
Run Code Online (Sandbox Code Playgroud)

通常我会迭代PHP中的$ _POST ['children'],然后执行sql

这究竟是如何翻译的?

编辑

好吧我几乎得到了这个,但是我的迭代器遍历了所有请求集合变量,我希望它只遍历一个特定的命名变量,在本例中是"children"

即localhost/page?operation = update&children = 9&children = 8&children = 17

foreach(string key in context.Request.QueryString) 
{
    ListDictionary updateParams = new ListDictionary();
    updateParams.Add("row_id", context.Request.QueryString[key]);
    string sSql = @"insert into dug  select :row_id from dual";
    dbi.ExecuteNonQuerySql(sSql, updateParams);
}
Run Code Online (Sandbox Code Playgroud)

我希望它忽略除特定var之外的所有内容

Mat*_*att 5

如果你正在做一个帖子.我认为这样的事情会起作用.

<input type="checkbox" name="children" value="108"/>
<input type="checkbox" name="children" value="109"/>
<input type="checkbox" name="children" value="110"/>
<input type="checkbox" name="children" value="111"/>
Run Code Online (Sandbox Code Playgroud)

表单被提交时,浏览器将以逗号分隔的所有值发送到服务器

然后在您的服务器端,您可以这样做:

var selected = context.Request.Form["children"].Split(',');
Run Code Online (Sandbox Code Playgroud)

Selected将是浏览器传入的每个值的字符串数组.然后,您可以循环遍历它们并执行您需要的任何操作.

希望这会有所帮助.