2015-06-05 28 views
1

我有C#数组的字符串变量,我只是想在使用AngularJS的下拉框中填充它。有人可以帮我把它分配给ng-init变量,以便我可以重复这些值吗?如何在Angular ng-init中使用C#字符串数组?

@{string[] strArray = new string[length]} 

<div ng-init="[email protected]"> 
    <select class="custom-select-style" ng-options="c as c for c in FieldOptions"> 
    <option value="">[email protected]</option> 
    </select> 
</div> 

当我试图像上面的代码段,它引发错误“语法错误:令牌‘]’不是在表达的30列中的一次式[FieldOptions = [System.String []]]起始于[]]]“

在此先感谢。

+0

显示您想要实现的HTML结果*可能*允许更多人回答您的问题。 –

回答

2

这个工作对我来说:

@{ 
    var options = new string[] { "Option1", "Option2", "Option3" }; 
    var optionsJson = Newtonsoft.Json.JsonConvert.SerializeObject(options); 
} 

<div ng-init="[email protected](optionsJson)"> 
    <select ng-model="selectedItem" class="custom-select-style" ng-options="option as option for option in FieldOptions"> 
     <option value="" selected>(Please select..)</option> 
    </select> 
</div> 

但是,恕我直言,你是以错误的方式接近应用程序:

  • 数据应该存在于Angular控制器中,将数据存入 ng-init指令是一种可怕的做法。
  • 你不应该使用Razor视图,只是普通的html视图。你决定使用Angular,因为在客户端建立html,不需要在服务器端使用生成html的Razor视图。通过使用纯html视图,您可以获得免费的额外优势:视图由浏览器缓存。
1

设置你的阵列参数这样

string[] strArray1 = new string[length]; 
    string[] strArray2 = new string[length]; 
    strArray1.forEach(function (str) { 
     strArray2.push({ name: str }); 
    }); 

鉴于你可以设置NG-init和NG选项如下

ng-init="[email protected]" 
ng-options="c.name as c.name for c in FieldOptions" 
+0

谢谢你venu :) –

相关问题