淘汰验证失去变量值

时间:2013-06-12 16:06:16

标签: jquery json model-view-controller knockout.js

我有这个Knockout代码:

var Account = ko.validatedObservable {
ClientID: '',
ConsultantID: '',
AccountNumber: ko.observable(),
Title: ko.observable('Mr'),
Forename: ko.observable(),
Surname: ko.observable().extend({
    required: { message: "* Required" },
    minLength: 2
}),
Submit: function () {

    Account.errors.showAllMessages();

    if (this.isValid())
        $.ajax({
            url: "/Account/CheckClientDetails",
            type: 'POST',
            dataType: 'json',
            data: ko.toJSON(this),
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                Account.ClientID = data.Key;
                alert(Account.ClientID);
                alert(ko.toJSON(Account));
           });
       }
};

第一个警报显示客户端ID,第二个警报中的JSON显示空字符串!

我将ko.toJSON(帐户)传递给MVC控制器,每个属性都被填充但ClientID为零。

如果我删除验证(来自knockout.validation),一切都按预期工作 - 但我不想失去这个功能!

我需要做些什么来填充此变量并保持值?

1 个答案:

答案 0 :(得分:0)

想出来。

使用验证将Account视图模型转换为方法。我将代码更改为:

Account().ClientID(data.Key);
alert(Account().ClientID());
alert(ko.toJSON(Account()));

它现在有效。