如何在Angular ng-init中使用c#字符串数组

How to use C# string array with Angular ng-init?

本文关键字:字符串 数组 Angular ng-init      更新时间:2023-09-26

我有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"