2013-06-12 118 views
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,從第二警報的JSON顯示一個空字符串!

我將ko.toJSON(帳戶)傳遞給MVC控制器,每個屬性都已填充,但ClientID爲零。

如果我刪除驗證(它來自knockout.validation),一切都按預期工作 - 但我不想失去該功能!

我需要做什麼不同來填充此變量並保持該值?

回答

0

想通了。

使用驗證將帳戶視圖模型轉換爲方法。我將代碼更改爲:

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

它現在可以工作。

+0

我會,但我必須等待2天顯然 –

+0

啊,新帳戶。感謝Rob。 –