2016-09-30 82 views
0

目前我正在開發一個項目,我正在嘗試的是使用剃鬚刀中的鍵創建一個數組。使用Razor中的鍵創建數組

這是我現在有:

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

這就是我需要:

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

我怎樣才能做到這一點?

+1

你不能,你需要一個字典或匿名對象。你爲什麼需要它?可能有更好的解決方案。 – CodeCaster

+0

你確定你想要一個數組而不是'dynamic'嗎?使用'dynamic'你可以訪問特定的屬性,但是你不能像數組一樣遍歷它。 – smoksnes

+0

我需要在我的頁面上顯示來自Razor的JSON對象,但我不知道如何。 –

回答

0

你不能用數組來做到這一點,但是你可以使用字符串作爲關鍵字的字典。

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

我需要從剃刀我的網頁上顯示的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>