2013-07-18 2 views
0

Je suis à la première application MVC4 en utilisant knockout. J'ai une liste de livres et chaque livre a une catégorie ('domeniu'). J'ai besoin d'insérer ou de mettre à jour pour avoir une liste déroulante avec toutes les catégories.knockout avec MVC4 comment lier une propriété d'un objet à une liste avec des valeurs

Les livres et les catégories se trouvent dans une base de données SQL (en utilisant d'abord le code EF). J'ai réussi à voir une liste de tous les livres, à éditer et insérer sauf cette propriété. Le dernier essai consistait à ajouter une propriété à mon objet livre et à le remplir avec un objet JSON avec toutes les catégories. C'est quelque chose comme: Code de la classe de vue du modèle

this.titlul = ko.observable ("@ Model.Carte.Titlul"); ...... this.domeniuId = ko.observable ("@ Model.Carte.DomeniuID"); this.domenii = ko.observable (JSON.stringify (@ Html.Raw (Model.DomeniiJSON)));

Et le résultat Débogueur pour this.domenii

[{ "domeniuId": 1, "Domeniul": "Engleza"}, { "domeniuId": 2, "Domeniul": "Romana"}, {"domeniuId": 3, "domeniul": "Matematica"}, {"domeniuId": 4, "domeniul": "Geografie"}, {"domeniuId": 5, "domeniul": "Istorie"}]

Dans les livres que j'ai la propriété domeniuId, j'ai besoin de montrer la propriété domeniul dans les catégories et mettre domeniulId dans les livres. Mais ce code ne montre rien:

<select id="domeniuId" name="domeniuId" data-bind="options: model.domenii, optionsText: 'domeniul', optionsValue: 'domeniuId', value: model.domeniuId, optionsCaption: 'Alege domeniul...'" /> 

où je peux trouver un échantillon ou quelque chose au sujet de ce problème?

[mise à jour]

Certains de mon code de ma classe qui deviendra le modèle de vue

this.titlul = ko.observable("@Model.Carte.Titlul"); 
this.domeniuId = ko.observable("@Model.Carte.DomeniuID"); 
this.domenii = ko.observable(JSON.stringify(@Html.Raw(Model.DomeniiJSON))); 

Et le résultat de domenii Débogueur:

[{\"domeniuId\":1,\"domeniul\":\"Engleza\"},{\"domeniuId\":2,\"domeniul\":\"Roma‌​na\"},{\"domeniuId\":3,\"domeniul\":\"Matematica\"}] 
+0

Pourriez-vous publier votre définition de modèle actuelle? –

Répondre

0

Essayez cette :

<select 
id="domeniuId" 
name="domeniuId" 
data-bind=" options: model.domenii, 
      optionsText: 'domeniul', 
      optionsValue: 'domeniuId', 
      value: 'domeniuId', 
      optionsCaption: 'Alege domeniul...'" /> 

JS:

var model = { 
    domenii: json 
}; 

ko.applyBindings(model); 

voir travailler sur jsFiddle.

+0

Hi Mon modèle est de type Book not Category. Je pense que c'est là que je suis confus. J'ai essayé d'ajouter une propriété à mon modèle et dans ce prop j'ai mis des catégories (model.domenii) –

+0

Une partie de mon code de ma classe qui deviendra viewmodel this.titlul = ko.observable ("@ Model.Carte.Titlul"); ...... this.domeniuId = ko.observable ("@ Model.Carte.DomeniuID"); this.domenii = ko.observable (JSON.stringify (@ Html.Raw (Model.DomeniiJSON))); Et le résultat de domenii dans le débogueur [{\ "domeniuId \": 1, \ "domeniul \" : \ "France \"}, {\ "domeniuId \": 2, \ "domeniul \": \ "Romana \"}, {\ "domeniuId \": 3, \ "domeniul \": \ "Matematica \" }]

+0

désolé je ne sais pas comment formater un commentaire –

Questions connexes