2017-04-13 34 views
-1

我有一些asp.net razor語法問題。我有這個JavaScript數組,想將其轉換爲剃刀語法:asp.net razor For Each syntax

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

要:

var Vendors = [ 
     @For Each Vendor In ViewBag.VendorsList 

      @Vendor.Name + "," 

     Next 
     ]; 

但是有一些錯誤,什麼是正確的方法是什麼?多謝。

回答

4

建議您在其他地方處理您的數據,表示層應該最好只做一件事,UI。如果在客戶端需要這個數組,那麼你必須從你的C#代碼(服務器端)返回它。否則,如果你在客戶端有一個數組,並希望對它做些什麼,只需將它發佈到服務器並在那裏進行處理。

這不是很清楚你想在這裏完成什麼。

+0

我有一個字符串數組,從控制器到視圖到達viewbag。想將它插入到名爲Vendors的JS數組中。而不是在該陣列上使用Jquery Autocomplete。 thx –

+0

我建議添加另一個操作方法,它返回一個包含你的數組的Json對象或你有什麼。加載頁面時,通過ajax從JavaScript請求此方法,獲取數據並更新您的UI。或者你可以在一個隱藏的字段中渲染你的數組,然後從JavaScript中讀取它的值並提取數組。無論你的口味更符合什麼。 – Nexus

0

它看起來像你在服務器端變量值的列表,並要注入到該視圖的JS代碼作爲數組....

所以(我編寫這個盲人如此它可能需要一些調整)...

@{ 
     List<script> mylist = ViewBag.VendorsList == null ? new List<script>() : (List<script>)ViewBag.VendorsList; 
     string delim = ""; 
} 


<script> 
var vendors = [ 
    @foreach(var item in mylist) { 
     string theOutput = delim + "\"" + item + "\""; 
     delim = "," 
    <text> 
    @theOutput 
    </text> 

    } 
]; 
</script>