6

我的 _Layout.cshtml 文件中有以下代码。这个想法是在我的javascript代码中填写了一些关于安全性的项目。LoggedIn和用户名显然没有问题,但是在javascript中放置角色的方式是错误的。Roles 只是一个 string[] (应该成为一个 JSON 数组。

但它显示为 '["user","'admin"]' 这显然不是一个有效的 JSON 数组。有什么想法可以将我的字符串数组转换为有效的 JSON 数组吗?我的 RolesArray 代码添加在下面。

<script type="text/javascript">
    $(function () {
        require(['jquery','config', 'security'],
                function ($, config, security) {

                security.items.loggedIn = '@Request.IsAuthenticated';
                security.items.Username = '@User.Identity.Name';

                var one = '@((MyIdentity)User.Identity).RolesArray'
                $(document).trigger("security_changed");
           });
    });
</script>


public String[] RolesArray   
{
    get
    {
        var two = Roles.ToArray();
        return two;        
    }
}
4

2 回答 2

11

使用 JSON.Net 见下面的代码

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
于 2013-09-22T21:18:24.230 回答
0

如果 razor 为此提供本机方法,那就太好了。

与此同时,这里有一个简单的(没有库)for循环来完成它:

 @{
    <script>var array = []; </script> //create an empty js array

      for(int i = 0; i < Model.Count; i++)
      {
        <script> array[@i] = '@Model[i]'; </script> //pass each string to array
      }
 }
于 2014-06-23T03:49:02.120 回答