Asp.net mvc 从aspnetmvc序列化时忽略剔除viewmodel的属性
我有一个ASPNET mvc站点,在视图中有带敲除的viewmodels。我正在尝试将传递给视图的模型序列化为视图模型 模型通过类似标准的aspnet mvc传递给Asp.net mvc 从aspnetmvc序列化时忽略剔除viewmodel的属性,asp.net-mvc,knockout.js,knockout-mapping-plugin,Asp.net Mvc,Knockout.js,Knockout Mapping Plugin,我有一个ASPNET mvc站点,在视图中有带敲除的viewmodels。我正在尝试将传递给视图的模型序列化为视图模型 模型通过类似标准的aspnet mvc传递给 @model Client.Controllers.TripDto 使用KO映射创建的knockout viewmodel如下所示 var jsonModel = '@Html.Raw(JsonConvert.SerializeObject(this.Model))'; var mvcModel =
@model Client.Controllers.TripDto
使用KO映射创建的knockout viewmodel如下所示
var jsonModel = '@Html.Raw(JsonConvert.SerializeObject(this.Model))';
var mvcModel = ko.mapping.fromJSON(jsonModel);
var viewModel = new TripViewModel();
var mapping = {
'ignore': ["expenses"]
};
ko.mapping.fromJS(mvcModel, mapping, viewModel);
ko.applyBindings(viewModel);
我在KO“自定义”视图模型上有一个属性开销。问题在于,该属性不在MVC模型中,而只是一个稍后获取其数据的属性。
但到目前为止,我还无法将模型传递到viewmodel中而不出错
错误:无法分析绑定。消息:ReferenceError:未定义费用;绑定值:foreach:费用
[在此错误上中断]
返回新函数(“$context”,“$element”,functionBody)
我有点不确定是否真的是映射失败了,但到目前为止,还没有看到任何可能的错误
所以问题是,在我映射的模型中不存在所有属性的情况下,是否可以使用KO映射
是否可以在不存在所有属性的情况下使用KO映射
在我映射的模型中
我认为KO并不关心这一点,但模型关心这一点。调用ko时,applyBindings
ko将搜索与HTML元素关联的属性,因此,如果要在HTML元素data bind='id:property'
中使用属性,则该属性必须存在于视图模型中。但是如果它是空的,那么就可以了
只需扩展视图模型,就可以包含新属性expenses
,其默认值为null
var mapping = {
create: function (options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data);
innerModel.expenses= null;
return innerModel;
}
}
请检查此项谢谢,该属性已在自定义viewmodel中定义为self.expenses=ko.observearray();我遇到了类似的问题,并使用下划线.js设置了默认的空数组/对象,这样映射插件就不会崩溃。如果需要的话,很乐意提供到示例的链接。实际上,我的问题与延迟加载有关,现在正在使用这种方法。但是感谢您提供有关创建的信息!