Asp.net mvc 3 在dropdownlist中使用knockout设置类型模型的选定选项

Asp.net mvc 3 在dropdownlist中使用knockout设置类型模型的选定选项,asp.net-mvc-3,drop-down-menu,knockout.js,Asp.net Mvc 3,Drop Down Menu,Knockout.js,我正在尝试从服务器端用knockout加载保存的选项,请参见下面的总体思路 我有以下javascript类: funcion Request() { this.Id = ko.observable(''); this.Name = ko.observable(''); this.Form = ko.obsevable(''); } function Form() { this.Id = ko.observable(''); this.Na

我正在尝试从服务器端用knockout加载保存的选项,请参见下面的总体思路

我有以下javascript类:

funcion Request() {  
    this.Id = ko.observable('');  
    this.Name = ko.observable('');  
    this.Form = ko.obsevable('');  
}

function Form() {
    this.Id = ko.observable('');
    this.Name = ko.observable(''); 
}
这是我的viewModel

function RequestViewModel() {
    var self = this;
    self.Request = new Request();
    *self.Request.Form = new Form();*
}
我可以毫无问题地保存表单,但当我尝试将保存的表单字段加载到数据库中时,绑定不起作用


如果有人曾经遇到过同样的问题,请告诉我如何解决它?

您的表单是可观察的。当设置一个observable时,应该将其作为方法调用,并将parse值设置为参数。大概是这样的:

function RequestViewModel() {
    var self = this;
    self.Request = new Request();
    self.Request.Form(new Form());
}
self.Request.Form(myLoadedForm);
ViewModel = ko.mapping.fromJS(requestFromServer);
如果已从数据库加载表单,则其外观应如下所示:

function RequestViewModel() {
    var self = this;
    self.Request = new Request();
    self.Request.Form(new Form());
}
self.Request.Form(myLoadedForm);
ViewModel = ko.mapping.fromJS(requestFromServer);

aaberg的回答是正确的,但如果您说需要一次加载所有这些文件,我建议您使用knockout mapping插件来自动执行此操作:

您的呼叫将如下所示:

function RequestViewModel() {
    var self = this;
    self.Request = new Request();
    self.Request.Form(new Form());
}
self.Request.Form(myLoadedForm);
ViewModel = ko.mapping.fromJS(requestFromServer);

如何从服务器加载数据?requestManager=newrequestmanager(@Html.Raw(Json.Encode(Model))//在viewmodel this.UpdateModel=函数(serverData){self.Request.Form(新请求(serverData.item.id,serverData.item.name));}中,该代码将无法工作。您的
请求
类的构造函数中没有参数,因此数据没有按您希望的方式加载。感谢您的响应,问题在于我没有只加载表单,我正在加载完整的请求视图模型,表单是请求中的一个属性,所有属性都已加载,但唯一缺少的是表单,这可能是因为表单的类型是另一个模型。