2017-09-21 49 views
0

獲取數據我使用這個HTML代碼(引導),以允許用戶輸入標籤從HTML到C#

<div class="bootstrap-tagsinput"> <span class="tag label label-info">test tag<span data-role="remove"></span></span> <span class="tag label label-info">testing <span data-role="remove"></span></span> <span class="tag label label-info">issue <span data-role="remove"></span></span> <input size="1" type="text"> </div> 

所以輸出

enter image description here

我的問題是,我不我怎麼讀C#(asp.net Web窗體)中的文本,因爲它不是ASP:TextBox

這是可以在C#中讀取這些標記嗎?

謝謝

+0

C#無法直接讀取這些html標籤。但是,您可以使用客戶端腳本來讀取這些標籤並將其傳遞給C#方法。 –

+0

我認爲你需要指定「Web窗體」 –

+0

是的,我的意思是網絡表單 - 謝謝基思 – aliusman

回答

3

所以通過查看這裏的文檔:https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/您應該將data-role="tagsinput"應用於輸入元素。這意味着你應該能夠做這樣的事情:

重要更新:我在一起,我早上喝咖啡已在踢之前拋出此需要注意的是asp:button已成爲asp:TextBox

<div class="bootstrap-tagsinput"> 
    <span class="tag label label-info">test tag<span data-role="remove"></span></span> 
    <span class="tag label label-info">testing <span data-role="remove"></span></span> 
    <span class="tag label label-info">issue <span data-role="remove"></span></span> 
    <asp:TextBox ClientIDMode="Static" ID="tags" runat="server" data-role="tagsinput" />  
</div> 

然後,您可以訪問。值爲tags作爲逗號分隔的字符串。

Alteratively你可以嘗試

<div class="bootstrap-tagsinput"> 
    <span class="tag label label-info">test tag<span data-role="remove"></span></span> 
    <span class="tag label label-info">testing <span data-role="remove"></span></span> 
    <span class="tag label label-info">issue <span data-role="remove"></span></span> 
    <input id="tags" runat="server" size="1" type="text" data-role="tagsinput" />  
</div> 

這將使可作爲一個逗號分隔的字符串服務器端的文本輸入,再次使用tags

最後最少webformy選項,只是給輸入name屬性

<div class="bootstrap-tagsinput"> 
    <span class="tag label label-info">test tag<span data-role="remove"></span></span> 
    <span class="tag label label-info">testing <span data-role="remove"></span></span> 
    <span class="tag label label-info">issue <span data-role="remove"></span></span> 
    <input name="tags" size="1" type="text" data-role="tagsinput" />  
</div> 

然後,您可以用Request.Form["tags"]訪問服務器端,有,你猜對了,標籤作爲一個逗號分隔的字符串。

+0

全部測試完畢 - 解決方案1號和3號解決方案非常好(我將與3號合作) - 非常感謝,非常感謝 – aliusman

+0

Jon,數據角色的含義是什麼? – DiegoS

+0

@DiegoS它看起來像是[數據屬性](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/data-*)引導程序利用其標記小部件。 –

0

試試這個辦法,使用JQuery:

客戶端:

<div class="bootstrap-tagsinput"> 
<span class="tag label label-info">test tag<span data-role="remove"></span></span> <span class="tag label label-info">testing <span data-role="remove"></span></span> <span class="tag label label-info">issue <span data-role="remove"></span></span> 
<input size="1" type="text"> 
</div> 
<input type="submit" id="sendTagsToServer" text="Send Tags To Server!"/> 

<!--Both buttons are invisible, to postback and send parameters--> 
<asp:Button ClientIDMode="Static" ID="postbackButton" runat="server" 
Style="display:none;" /> 
<asp:HiddenField ClientIDMode="Static" ID="tagsString" runat="server" /> 

<script> 
    $(document).ready(function(){ 
    $("#sendTagsToServer").on("click",function(){ 
     //get values from tags 
     var tags= $(".tag"); 

     //save values in hidden 
     var tagText = "";   
     tags.each(function(index){ 
     tagtext = tagText + "&" + $(this).text();   
     }); 
     $("#tagsString").val(tagText);  

     //postback to server 
     $("#postbackButton").click(); 
    }); 
    }); 
</script> 

服務器端:

protected void btnPB_Click(object sender, EventArgs e) 
{ 
    //read tags, server side 
    string[] param = tagsString.Value.Split("&"); 
} 

這裏的技巧是使用兩個輸入,無論是隱藏,一個回發和一個發送parametters,當然,你可以使用JavaScript代替的JQuery。

+0

爲什麼使用隱藏的asp:Button?爲什麼不讓'sendTagsToServer'成爲一個asp按鈕並使用它? –

+0

@JonP我試圖既您的代碼,我想用這個問題簡單的ASP:按鈕,當你按下Enter鍵添加在文本框的標籤,它觸發APS:按鈕在頁面上 - 我會回來你們 – aliusman

+0

爲了避免使用隱藏按鈕,你可以使用'OnClientClick'屬性在頁面回發之前運行javascript。 –