【发布时间】:2017-07-07 18:10:33
【问题描述】:
在 C# 中,我将 API 调用中的对象传递给 UI,然后希望自动将该对象的属性映射到视图模型。我希望使用 Knockout 的映射插件来做到这一点。
public class MyModel
{
public int ID { get; set; }
[Display(Name ="Debt Name")]
[Required(ErrorMessage = "A description is required")]
public string Description { get; set; }
}
这是我通过 API 调用 (WebAPI) 传递给 UI 的模型的简化版本。
在 Javascript 中,我定义了一个要填充的类:
class Model {
id: KnockoutObservable<number>;
description: KnockoutObservable<string>;
}
这在我的 ViewModel 之外。
在我的视图模型中,我创建了模型对象,并在我的构造函数中尝试使用映射填充类。你可以看到我注释掉的手动版本,但我试图摆脱它:
class DebtViewModel {
model: Model = new Model();
constructor() {
//this.model.id = ko.observable(0);
//this.model.description = ko.observable("");
$.get("/api/debt/1")
.done((data) => {
this.model = ko.mapping.fromJSON(data);
//this.model.id(data.ID);
//this.model.description(data.Description);
});
但是,映射似乎不起作用。我没有收到错误,但模型似乎只是一个空函数。
这可以吗?我做错了什么?
【问题讨论】:
-
“数据”是什么样的?可能映射插件无法解析它。
标签: javascript c# asp.net-web-api knockout.js