目前我正在开发一个项目,我想要做的是在剃刀中创建一个带键的数组。
这就是我现在所拥有的:
string[] members = {@item.Name, @item.Url };
这就是我需要的:
string[] members = {pageName: @item.Name, pageUrl: @item.Url };
我怎样才能做到这一点?
答案 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>