簡體   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