我在_Layout.cshtml文件中有以下代码。我的想法是在我的javascript代码中填写了一些关于安全性的项目.LoggedIn和用户名显然没问题,但是角色放在javascript中的方式是错误的。角色只是一个字符串[](应该成为一个JSON数组。
但它显示为'[& QUOT;使用者&安培; QUOT;,&安培; QUOT;'管理员&安培; “;”'显然不是有效的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;
}
}
答案 0 :(得分:8)
使用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);
答案 1 :(得分:0)
如果剃刀为此制作本机方法,那就太好了。
与此同时,这是一个简单的(没有库)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
}
}