2012-01-26 17 views
5

मैं एक जे एस कोड, जिसमें एक सरणी की तरह अच्छी तरह से काम करता है के पीछे या .cs जब इसकी तरहअसाइन सी # स्ट्रिंग जावास्क्रिप्ट सरणी

var availableTags = [ 
      "ActionScript", 
      "AppleScript", 
      "Asp", 
      "BASIC", 
      "C" 
        ]; 

मैं तो एक सरणी स्ट्रिंग मेरी कोड में की गई है करने के लिए कक्षा स्तर पर

public static string[] test={"animal","lovely"}; 

मैं तो इस

var availableTags = "<%=test%>"; // also tried without quotes 

को js सरणी बदल अब मैं वा के रूप में परिणाम नहीं हूँ पिछले js सरणी

पूरा कोड के साथ संपादन, jQuery मैं http://jqueryui.com/demos/autocomplete/#multiple

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

using System.Collections; 
using System.Web.Script.Serialization; 

public partial class onecol : System.Web.UI.Page 
{ 
    JavaScriptSerializer serializer; 

    public static string test = "['animal','lovely']"; 
    public static string check; 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     serializer = new JavaScriptSerializer(); 
     //serializer 
     this.detail.ToolsFile = "BasicTools.xml"; 
     test = returnTitle(); 
    } 

} 

से लिया और html के साथ स्क्रिप्ट के साथ होने एस

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
<script type="text/javascript" src="Jscript.js"></script> 
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="jquery-ui-1.8.17.custom.css"></script> 
    <link href="~/jquery-ui-1.8.17.custom.css" rel="stylesheet" type="text/css"/> 
     <script type="text/javascript"> 
      $(function() { 
       var availableTags = <%=test%>; 

       function split(val) { 
        return val.split(/,\s*/); 
       } 
       function extractLast(term) { 
        return split(term).pop(); 
       } 

       $("#tags") 
       // don't navigate away from the field on tab when selecting an item 
      .bind("keydown", function (event) { 
       if (event.keyCode === $.ui.keyCode.TAB && 
         $(this).data("autocomplete").menu.active) { 
        event.preventDefault(); 
       } 
      }) 
      .autocomplete({ 
       minLength: 0, 
       source: function (request, response) { 
        // delegate back to autocomplete, but extract the last term 
        response($.ui.autocomplete.filter(
         availableTags, extractLast(request.term))); 
       }, 
       focus: function() { 
        // prevent value inserted on focus 
        return false; 
       }, 
       select: function (event, ui) { 
        var terms = split(this.value); 
        // remove the current input 
        terms.pop(); 
        // add the selected item 
        terms.push(ui.item.value); 
        // add placeholder to get the comma-and-space at the end 
        terms.push(""); 
        this.value = terms.join(", "); 
        return false; 
       } 
      }); 
      }); 
    </script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 

<div class="demo" > 
<div class="ui-widget"> 
    <label for="tags">Tag programming languages: </label> 
    <input id="Text1" class="#tags" size="50" /> 


</div> 
</div> 

वास्तव में अपने लिए एक स्वत: पूर्ण कार्यक्षमता है टैग दें, टैगिंग के लिए ऑटो पूर्ण सुझाव मैं सी # कोड से प्राप्त करना चाहता हूं, मैंने jqueryui.com/demos/autocomplete/#multiple से Jquery स्रोत लिया और फिर मैंने इसे .cs फ़ाइल से C# स्ट्रिंग देने का प्रयास किया, मैं समझाता हूं इसे संपादित संस्करण पर कोड के साथ रखा गया है, इसके पीछे सी # कोड लिंक

+2

[जावास्क्रिप्ट सरणी में पास सी # एएसपी.नेट सरणी] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3464498/pass-c-sha आरपी-एएसपी-नेट-एरे-टू-जावास्क्रिप्ट-सरणी) –

+0

@TimSchmelter संपादित, कृपया – user1074474

उत्तर

21

आपको सी # स्ट्रिंग सरणी को जावास्क्रिप्ट सरणी में क्रमबद्ध करने की आवश्यकता है।

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

आमतौर पर मैं एक आवरण के रूप में एक सरल स्थिर वर्ग पैदा करते हैं।

public static class JavaScript 
{ 
    public static string Serialize(object o) 
    {    
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     return js.Serialize(o); 
    } 
} 

तो फिर तुम करने के लिए

//C# Array(Member of asp page) 
protected string[] Values = { "Sweet", "Awesome", "Cool" }; 

<script type="text/javascript"> 
    var testArray = <%=JavaScript.Serialize(this.Values) %> 
</script> 
+1

+1 तो अगला कदम क्या है? –

+0

के लिए – user1074474

+0

मैं अब पूर्ण स्रोत कोड के साथ प्रश्न संपादित करने जा रहा हूं – user1074474

1

test संपत्ति एक स्ट्रिंग प्रॉपर्टी होनी चाहिए और इसे स्ट्रिंग को प्रस्तुत करना चाहिए जिसे जेएस इंजन द्वारा सरणी के रूप में पार्स किया जाएगा। इसे इस्तेमाल करे।

संपत्ति के पीछे कोड

public static string test= "['animal','usman lovely']"; 

जे एस

var availableTags = <%=test%>;//No quotes 
+0

जांचें मैंने उद्धरण के बिना कोशिश की – user1074474

+0

@ user1074474 - संपत्ति परिवर्तनों के पीछे कोड देखें। – ShankarSangoli

+0

शायद घुंघराले ब्रेसिज़ को छोड़ दें और इसे 'स्ट्रिंग' के रूप में परिभाषित करें। –

3

वह कुछ इस तरह होगा ...

var availableTags = ["<%= string.Join("\", \"", test) %>"]; 

या

var availableTags = ['<%= string.Join("', '", test) %>']; 

पहले एक के रूप में

var availableTags = ["Sweet", "Awesome", "Cool"]; 

प्रस्तुत करना होगा और के रूप में

var availableTags = ['Sweet', 'Awesome', 'Cool']; 

जो दोनों के स्वत: पूर्ण के लिए ठीक हैं दूसरा एक प्रस्तुत करना होगा।

+0

में एक सरणी के रूप में कर सकते हैं मैंने इसे उद्धरण/[] के साथ/बिना '' के साथ भी कोशिश की, लेकिन अभी भी – user1074474

+0

@ user1074474 पर काम नहीं कर रहा है, "काम नहीं कर रहे" से आपका क्या मतलब है? हमें त्रुटि या प्रस्तुत HTML दिखाएं (स्रोत देखें)। –

+0

मैं अब पूर्ण स्रोत कोड के साथ प्रश्न संपादित करने जा रहा हूं – user1074474

6
var availableTags = ['<%=String.join("','",test)%>']; 
+0

यह ध्यान दिया जाना चाहिए कि यदि आपके किसी भी तार में एक उद्धरण होता है, तो इन्हें बचाना चाहिए। –

+0

कंपाइलर त्रुटि संदेश: CS0117: 'स्ट्रिंग' में 'शामिल' – user1074474

+0

संपादित करने की परिभाषा नहीं है, कृपया जांचें – user1074474

0

केवल अनुक्रमित का उपयोग आइटम आप की जरूरत को क्रमानुसार करने उस वर्ग का उपयोग कर सकते अपने परीक्षण स्ट्रिंग सरणी मैं

तरह अनुक्रमित देकर की कोशिश की है पाने के लिए
var availableTags = "<%=test[0]%>"; // animal 
var availableTags = "<%=test[1]%>"; // lovely 
संबंधित मुद्दे