使用MVC4进行淘汰如何将对象的属性绑定到具有值的列表

时间:2013-07-18 09:53:23

标签: entity-framework asp.net-mvc-4 knockout.js

我是第一个使用淘汰赛的MVC4应用程序。我有一个书籍清单,每本书都有一个类别('domeniu')。我需要在插入或更新时有一个包含所有类别的下拉列表。

书籍和类别位于SQL数据库中(首先使用EF代码)。我设法查看了所有书籍的列表,除了这个属性外,还要编辑和插入。最后一次尝试是向我的book对象添加一个属性,并用一个包含所有类别的JSON对象填充它。 它是这样的: 视图模型类中的代码

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

调试器的结果为this.domenii

[{ “domeniuId”:1, “domeniul”: “Engleza”},{ “domeniuId”:2 “domeniul”: “罗马”},{ “domeniuId”:3 “domeniul”: “Matematica” },{ “domeniuId”:4 “domeniul”: “Geografie”},{ “domeniuId”:5 “domeniul”: “Istorie”}]

在图书中,我有domeniuId属性,因此我需要显示类别中的domeniul属性,并将domeniulId放入书籍中。 但是这段代码没有显示任何内容:

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

我可以在哪里找到有关此问题的样本或其他内容?

[更新]

我班上的一些代码将成为视图模型

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

调试器中domenii的结果:

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

1 个答案:

答案 0 :(得分:0)

试试这个:

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

jsFiddle上查看它。