繁体   English   中英

获取C#中由JavaScript创建的隐藏字段

[英]get hidden field in C#, created by javascript

我有一个可以在我的表单中动态创建隐藏文件的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 "> 

就像遇到问题一样,您可以按其名称访问隐藏字段(甚至表单字段)值,如下所示:

string hdnCommaSeparatedString = Request.Form["myHiddenField"];

这将为您提供所有隐藏字段的逗号分隔值的字符串,您可以使用string.split(...)重载对其进行拆分以获取这些值。

string[] hiddenValues = hdnCommaSeparatedString.Split(',');

例如, "Root Canal Treatment ,Cosmetic Dentistry ...." //This you can split using server side logic

注意如果隐藏字段中的值包含逗号,则这将中断,并且当您尝试使用逗号(,)在字符串中拆分字符串时,您将看到意外的字符串中断。

例如

 <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();

希望对您有帮助。

为了清楚起见,您应该为每个隐藏字段创建一个唯一的名称,因为如果您不这样做,则返回到代码中,该请求将仅接收一个键“ myHiddenField”,该键将保存所有值。 因此,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属性,可以获取所有已发布的不同键,它们是相应输入字段的名称。 因此,键==名称。

您具有密钥,因此可以通过使用Request.Form属性的Get方法获取值。 这接受输入字段的索引或键(名称)。

然后,一旦您获得了价值,就可以继续进行方案。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM