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”)。