0

私はこのノックアウトコードを持っています:

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 が表示され、2 番目のアラートの JSON には空の文字列が表示されます。

ko.toJSON(Account) を MVC コントローラーに渡します。すべてのプロパティが設定されていますが、ClientID はゼロです。

検証を削除すると (knockout.validation から)、すべてが期待どおりに機能しますが、その機能を失いたくありません!

この変数にデータを入力して値を維持するには、別の方法で何をする必要がありますか?

4

1 に答える 1

0

理解した。

検証を使用すると、Account ビュー モデルがメソッドに変わります。コードを次のように変更しました。

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

そしてそれは今動作します。

于 2013-06-12T16:14:48.710 に答える