如何在Angular ng-init中使用c#字符串数组
本文关键字:字符串 数组 Angular ng-init | 更新日期: 2023-09-27 17:53:51
我有c#字符串变量数组,我只是想用AngularJS在下拉框中填充它。谁能帮我把它赋值给init变量,这样我就能重复这些值了?
@{string[] strArray = new string[length]}
<div ng-init="FieldOptions=@strArray">
<select class="custom-select-style" ng-options="c as c for c in FieldOptions">
<option value="">--@MyResource.Profile.PlsSelect--</option>
</select>
</div>
当我像上面的代码片段一样尝试时,它抛出一个错误"语法错误:Token ']'不是表达式[FieldOptions=[System]的第30列的主表达式。字符串[]]开始于[]]"
这个适合我:
@{
var options = new string[] { "Option1", "Option2", "Option3" };
var optionsJson = Newtonsoft.Json.JsonConvert.SerializeObject(options);
}
<div ng-init="FieldOptions=@(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>
然而,恕我直言,您正在以错误的方式处理应用程序:
- Data应该存在于Angular控制器中,把数据放进去ng-init指令是一个可怕的做法。
- 你不应该使用Razor视图,只使用普通的html视图。你决定使用Angular,因此html是在客户端构建的,不需要使用Razor视图在服务器端生成html。通过使用纯html视图,您可以免费获得额外的优势:视图由浏览器缓存。
用这样的参数设置数组
string[] strArray1 = new string[length];
string[] strArray2 = new string[length];
strArray1.forEach(function (str) {
strArray2.push({ name: str });
});
在视图中,你可以设置ng-init和ng-options如下
ng-init="FieldOptions=@strArray2"
ng-options="c.name as c.name for c in FieldOptions"