我有一個簡單MVC模式是這樣的:敲除簡單對象映射
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string MobileNumber { get; set; }
public string EmailAddress { get; set; }
}
我想這種類型的敲除視圖模型內的一個目的映射以便填充它:
var UserViewModel = function() {
var self = this;
self.user = ko.mapping.fromJS({});
$.getJSON("/UserManagement/CreateEmptyUser", function (data) {
ko.mapping.fromJS(data, self.user);
});
self.createUser = function (data, eventArgs) {
var user = data;
$.ajax({
type: "post",
contentType: "application/json",
data: ko.toJSON(user),
url: "@Url.Action("CreateUser")",
success: function() {
window.location = "@Url.Action("AddNew")";
}
});
};
};
我遇到的問題是我不知道如何映射任何單個對象。我已經使用
self.user = ko.mapping.fromJS([]);
$.getJSON("/UserManagement/CreateEmptyUser", function (data) {
ko.mapping.fromJS(data,{}, self.user);
});
正在使用數組
,並試圖在索引0中提取元素試過,我以爲會合作的其他解決方案是一個在第二註釋塊。我在google上找到的所有東西都讓我映射整個數組,但沒有涉及簡單的對象映射。有沒有適當的方法來做到這一點?我想保持模型分離,而不是在javascript中手動描述它的屬性。
謝謝, 亞歷克斯·巴拉克
感謝您的建議。我已經嘗試了第二種方法,但在調用'$ .getJSON'方法後,'self.user'仍然未定義。我嘗試過設置'self.user = null;',但是在調用之後該值仍爲'null'。我想唯一剩下的就是手動映射屬性。 –
我通常使用第一種方法,說實話,因爲我可以在頁面加載時立即應用綁定,這在您不想單獨綁定子視圖模型時非常有用。您可以嘗試將一個空映射也傳遞給映射:ko.mapping.fromJS(data,{});並看看是否有效。 –
它與第一種方法,謝謝:) –