使用Razor中的键创建数组

时间:2016-09-30 08:47:31

标签: c# asp.net razor

目前我正在开发一个项目,我想要做的是在剃刀中创建一个带键的数组。

这就是我现在所拥有的:

string[] members = {@item.Name, @item.Url };

这就是我需要的:

string[] members = {pageName: @item.Name, pageUrl: @item.Url };

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您无法使用数组执行此操作,但您可以使用字符串作为键的字典。

Dictionary<string, string> member = new Dictionary<string, string>
{
     { "pageName", item.Name },
     { "pageUrl", item.Url }
};

答案 1 :(得分:0)

  

我需要在Razor [...]

页面上显示JSON对象

你不需要一个阵列。听起来你实际上只是想要一个物体。您可以创建一个对象,然后将其渲染为json。

@ {
    object members = new { pageName = @item.Name, pageUrl = @item.Url};
}

<script>
    var myObj = @Html.RenderAsJson(members); // With HtmlHelper.
    var myObj2 = @Html.Raw(Json.Encode(members)) // Without HtmlHelper.
</script>

如果你更喜欢这个选项,那就是帮助方法:

public static class HtmlHelpers
{
    public static IHtmlString RenderAsJson(this HtmlHelper helper, object model)
    {
        var obj = JsonConvert.SerializeObject(model,
            new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });
        return helper.Raw(obj);
    }
}

现在你有了一个名为myObj的javascript对象。您可以从javascript访问myObj.pageName

或者,您可以使用dynamic,如果您想要访问视图中的项目,但不能使用javascript。

@ {
    dynamic members = new { pageName = @item.Name, pageUrl = @item.Url};
}

<span>@members.pageName</span>