2016-09-30 6 views
0

Derzeit arbeite ich an einem Projekt, und was ich versuche zu tun ist, ein Array mit Tasten in Rasierer zu erstellen.Erstellen eines Arrays mit Schlüsseln in Razor

Das ist, was ich habe jetzt:

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

Das ist, was ich brauche:

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

Wie kann ich das erreichen?

+1

Sie können nicht, Sie benötigen ein Wörterbuch oder ein anonymes Objekt dafür. Warum brauchst du es trotzdem? Es gibt wahrscheinlich bessere Lösungen. – CodeCaster

+0

Sind Sie sicher, dass Sie ein Array und kein 'dynamisches' wollen? Mit einem 'dynamic' können Sie auf bestimmte Eigenschaften zugreifen, aber Sie können nicht wie ein Array durch iterieren. – smoksnes

+0

Ich muss JSON-Objekt auf meiner Seite von Razor anzeigen, aber ich weiß nicht wie. –

Antwort

0

Sie können dies nicht mit Arrays tun, jedoch können Sie ein Dictionary mit String als Schlüssel verwenden.

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

Ich brauche Objekt JSON zum Anzeigen auf meiner Seite von Razor [...]

Sie kein Array dafür braucht. Es klingt, als ob Sie eigentlich nur ein Objekt wollen. Sie können ein Objekt erstellen und es dann als json rendern.

@ { 
    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> 

Und die Hilfsmethode, wenn Sie diese Option bevorzugen:

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); 
    } 
} 

Jetzt haben Sie eine Javascript-Objekt namens myObj. Und Sie können auf myObj.pageName von Javascript zugreifen.

Alternativ können Sie dynamic verwenden, wenn Sie auf das Element in Ihrer Ansicht, aber nicht in Javascript zugreifen möchten.

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

<span>@members.pageName</span> 
Verwandte Themen