我有一个可以动态创建隐藏字段的javascript,隐藏字段的生成也可变,它也可以是200和1000。我希望使用循环在我的C#代码中使用这些值。我尝试了下面的代码,但它只给我第一个静态值,但我需要循环中的值,以便我可以访问所有值并存储在我的SQL数据库中
string valueOfTheHiddenField = this.Request.Form.Get("0");
需要此类代码的示例
for each
{
string HiddenFieldvalue = this.Request.Form.Get("0");
insert into sql = value Of The HiddenField
}
以下是我正在使用的示例代码
var form = document.forms['form1'];
for (var i = 0; i < 150; i++) {
var el = document.createElement("input");
el.type = "hidden";
el.name = "myHiddenField";
el.value = trial2;
el.id = i;
form.appendChild(el);
}
生成这些隐藏字段
<input id="0" type="hidden" name="myHiddenField" value=" Root Canal Treatment ">
<input id="1" type="hidden" name="myHiddenField" value=" Cosmetic Dentistry ">
<input id="2" type="hidden" name="myHiddenField" value=" Fillings ">
<input id="3" type="hidden" name="myHiddenField" value=" Apicectomy ">
<input id="4" type="hidden" name="myHiddenField" value=" Aesthetic Crown And Bridges ">
<input id="5" type="hidden" name="myHiddenField" value=" Bleaching ">
答案 0 :(得分:2)
与您的问题一样,您可以按名称访问隐藏字段(甚至是表单字段)值,如下所示:
string hdnCommaSeparatedString = Request.Form["myHiddenField"];
这将为您提供所有隐藏字段的逗号分隔值字符串,您可以使用string.split(...)重载来分割这些值以获取值。
string[] hiddenValues = hdnCommaSeparatedString.Split(',');
E.g。 "Root Canal Treatment ,Cosmetic Dentistry ...." //This you can split using server side logic
注意如果隐藏字段中的值包含逗号,并且当您尝试使用逗号(,)代码后面的string.split时,您将看到意外的字符串中断。
E.g。
<input id="0" type="hidden" name="myHiddenField" value=" Root Canal, Treatment "><!--Notice a comma after Root Canal in the value & this will yield unexpected values if you string split on code behind.-->
<input id="1" type="hidden" name="myHiddenField" value=" Cosmetic Dentistry ">
修改强>
根据以下评论,通过Request.Form
获取表单字段值的其他情况<强> 情况1: 强>
隐藏字段名称在您的情况下不是唯一的:
string[] hiddenFieldValueList = Request.Form.GetValues("myHiddenField");
//This allows parsing of hidden/form field values having comma in them
<强> 情况2: 强>
隐藏字段名称是唯一的,您可以提取如下值:
<强> HTML 强>
<input id="0" type="hidden" name="myHiddenField0" value=" Root Canal, Treatment ">
<input id="1" type="hidden" name="myHiddenField1" value=" Cosmetic Dentistry ">
<input id="2" type="hidden" name="myHiddenField2" value=" Fillings, ">
<input id="3" type="hidden" name="myHiddenField3" value=" Apicectomy ">
<input id="4" type="hidden" name="myHiddenField4" value=" Aesthetic Crown And Bridges ">
<input id="5" type="hidden" name="myHiddenField5" value=" Bleaching ">
代码背后
var hiddenFieldValueList = Request.Form.AllKeys.Where(key => key.StartsWith("myHidden")).Select(it => Request.Form[it]).ToList();
希望这能帮到你..
答案 1 :(得分:0)
为清楚起见,您应为每个隐藏字段创建一个唯一的名称,因为如果您不在代码中,请求将只会收到一个密钥,即myHiddenField&#39;,它将保留所有的价值观。 所以,html代码应该是这样的:
<input id="0" type="hidden" name="myHiddenField0" value=" Root Canal Treatment ">
<input id="1" type="hidden" name="myHiddenField1" value=" Cosmetic Dentistry ">
<input id="2" type="hidden" name="myHiddenField2" value=" Fillings ">
<input id="3" type="hidden" name="myHiddenField3" value=" Apicectomy ">
<input id="4" type="hidden" name="myHiddenField4" value=" Aesthetic Crown And Bridges ">
<input id="5" type="hidden" name="myHiddenField5" value=" Bleaching ">
只需将索引附加到JS代码中每个名称的末尾。
然后在后面的C#代码中,您应该像这样处理发布的表单:
var keys = Request.Form.AllKeys;
foreach (var key in keys)
{
string value = Request.Form.Get(key);
}
通过访问已发布表单的AllKeys属性,您将获得所有发布的不同键,这些键是相应输入字段的名称。所以Keys == Names。
您有密钥,因此可以使用Request.Form属性的Get方法获取值。它接受索引或输入字段的键(名称)。
然后,只要您获得了价值,就可以继续使用您的方案。
希望这有帮助。