Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用动态变量请求“[””?请求[“变量”]?_C#_Asp.net_Post_Razor_Request - Fatal编程技术网

C# 如何使用动态变量请求“[””?请求[“变量”]?

C# 如何使用动态变量请求“[””?请求[“变量”]?,c#,asp.net,post,razor,request,C#,Asp.net,Post,Razor,Request,我正在构建一个表单,表单上的问题或输入的数量取决于数据库中的值。表单上的每个输入都是一个单选类型。标记的名称是动态的,使用@db.row.questionID从数据库加载,该名称类似于:,通过请求的任何查询都等于1 我的问题是,我使用post编写表单,我想将值提交回一个单独的数据库,但我不知道如何请求多个值,这些值会根据查询动态变化 我写的示例代码,它不会给我任何错误,但也不会给我任何结果 foreach(var prow in poll){ var Question =

我正在构建一个表单,表单上的问题或输入的数量取决于数据库中的值。表单上的每个输入都是一个单选类型。标记的名称是动态的,使用
@db.row.questionID
从数据库加载,该名称类似于:
,通过请求的任何查询都等于1

我的问题是,我使用post编写表单,我想将值提交回一个单独的数据库,但我不知道如何请求多个值,这些值会根据查询动态变化

我写的示例代码,它不会给我任何错误,但也不会给我任何结果

    foreach(var prow in poll){
        var Question = prow.PollId;
        if (Request.Form["@prow.PollId"] == "A") {                
            int AnsA = row.ResultsA;
            AnsA = AnsA + 1;
            db.Execute("UPDATE Results SET ResultsA=@0 WHERE ResultsId=@1", AnsA, Question);
        }
我也尝试过:

    if (Request["prow.PollId"] == "B") {
            int AnsB = row.ResultsB;
            AnsB += 1;
            db.Execute("UPDATE Results SET ResultsB=@0 WHERE ResultsId=@1", AnsB, prow.PollId);
        }

您想通过动态输入获取表单中的值吗?如果是,您可以尝试以下方法:

 NameValueCollection nvc = Request.Form;
 foreach (var item in Request.Form.AllKeys)
 {
        //do something you want.
        // Examble : if(item == "A")// item will return name of input
        // Note: nvc[item] return value of input
 }
更新:

Request.Form.AllKeys将返回表单中的所有输入名称

我们使用foreach通过输入名称的集合进行lopp

使用nvc[item]或Request.Form[item]获取输入值


您可以阅读这篇文章:

是否希望通过动态输入获取表单中的值?如果是,您可以尝试以下方法:

 NameValueCollection nvc = Request.Form;
 foreach (var item in Request.Form.AllKeys)
 {
        //do something you want.
        // Examble : if(item == "A")// item will return name of input
        // Note: nvc[item] return value of input
 }
更新:

Request.Form.AllKeys将返回表单中的所有输入名称

我们使用foreach通过输入名称的集合进行lopp

使用nvc[item]或Request.Form[item]获取输入值


您可以阅读本文:

“@prow.PollId”是一个字符串,如果您想传递动态参数,必须使用like Request.Form[Question]有趣的帖子。我没有考虑引号是字符串值。但是,当我转出你所说的内容时,它在submit/post上给了我一个错误,上面说
异常详细信息:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:System.Collections.Specialized.NameValueCollection.this[string]'的最佳重载方法匹配项是一个字符串,如果要传递动态参数,必须使用like Request.Form[Question]有趣的帖子。我没有考虑引号是字符串值。但是,当我转出你所说的内容时,它在submit/post上给了我一个错误,上面说
异常详细信息:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:System.Collections.Specialized.NameValueCollection.this[string]'的最佳重载方法匹配项是一个字符串,如果要传递动态参数,必须使用like Request.Form[Question]有趣的帖子。我没有考虑引号是字符串值。但是,当我转出你所说的内容时,它在提交/发布时给了我一个错误,上面说
异常详细信息:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:System.Collections.Specialized.NameValueCollection.this[string]的最佳重载方法匹配'有一些无效的参数
我真的希望得到这个解决方案,但我得到了一个
CS0246
名称空间错误。。。有关编译和无法定位引用的内容。有什么解决方案吗?你能发布完整的页面代码吗?在您上面的评论中,错误是无效的参数,可能在您编写代码时出错了。哦,对此我深表歉意。我试图使用
NameValueCollection
,但它给了我一个错误,即引用没有导致任何结果。foreach的
foreach
没有给出任何错误,因此它起作用了。但是值没有存储在数据库中,我想再次检查
nvc
的外观…您应该使用namespace System.Collections.Specialized,或者您可以使用Request.Form[item]来获取输入值,而不是nvc。在我的示例中:if(item==“A”)表示如果表单上的radio被命名为“A”。如果您想检查输入的值而不是输入的名称,可以使用:If(Request.Form[item]==“A”)。我对这个解决方案很有希望,但我得到了一个
CS0246
名称空间错误。。。有关编译和无法定位引用的内容。有什么解决方案吗?你能发布完整的页面代码吗?在您上面的评论中,错误是无效的参数,可能在您编写代码时出错了。哦,对此我深表歉意。我试图使用
NameValueCollection
,但它给了我一个错误,即引用没有导致任何结果。foreach的
foreach
没有给出任何错误,因此它起作用了。但是值没有存储在数据库中,我想再次检查
nvc
的外观…您应该使用namespace System.Collections.Specialized,或者您可以使用Request.Form[item]来获取输入值,而不是nvc。在我的示例中:if(item==“A”)表示如果表单上的radio被命名为“A”。如果您想检查输入的值而不是输入的名称,可以使用:If(Request.Form[item]==“A”)。我对这个解决方案很有希望,但我得到了一个
CS0246
名称空间错误。。。有关编译和无法定位引用的内容。有什么解决方案吗?你能发布完整的页面代码吗?在您上面的评论中,错误是无效的参数,可能在您编写代码时出错了。哦,对此我深表歉意。我试图使用
NameValueCollection
,但它给了我一个错误,即引用没有导致任何结果。foreach的
foreach
没有给出任何错误,因此它起作用了。但是值没有存储在数据库中,我想再次检查
nvc
的外观…您应该使用namespace System.Collections.Specialized,或者您可以使用Request.Form[item]来获取输入值,而不是nvc。在我的示例中:if(item==“A”)表示如果表单上的radio被命名为“A”。若要检查输入的值而不是输入的名称,可以使用:If(Request.Form[item]=“A”)。