1

如何使用基因敲除驗證將驗證設置爲數組?敲除映射 - 驗證數組

我的對象定義

//c# code 
public class Trophy 
{ 
    public string Name { get; set; } 
    public string Category { get; set; } 
    public double PrizeMoney { get; set; } 
} 

public class Player 
{ 
    public string Name { get; set; } 
    public List<Trophy> Trophies { get; set; } 
} 

我能夠設置驗證喜歡使用KO驗證簡單的類型,如「名稱」「需要」,但我不能設置獎盃這是一個數組。對於簡單類型,我使用如下

// javascript code 
var localModel = ko.mapping.fromJSON(getPlayerModelJson()); 

// Validation 
localModel.Name.extend({ required: { message: 'Please enter first name' } }); 

請讓我知道如何做的獎盃名稱,類別和PrizeMoney?

我試圖利用作爲
http://knockoutjs.com/documentation/plugins-mapping.html提到「使用‘創造’自定義對象的構造」,但它是建立一個重複的獎盃陣列項目,例如,如果我在獎盃生成的目標有兩個列表項也有兩個項目,但它是最後一個項目的副本

// Java script code 
var Trophies = function (data) { 

    Name = ko.observable(data.Name).extend({ required: { message: 'Please enter name' } }), 
    Category = ko.observable(data.Category), 
    PrizeMoney = ko.observable(data.PrizeMoney) 
} 

var localModel = ko.mapping.fromJSON(getPlayerModelJson(), TrophiesMapping); 

//Custom mapping 
var TrophiesMapping = { 
    'Trophies': { 
     create: function (options) { 
     return new Trophies(options.data); 
     } 
    } 
} 

我只想驗證數組中的屬性。謝謝

回答

0

這是JSFiddle using mapping。我認爲你的問題可能是以下行:

var localModel = ko.mapping.fromJSON(getPlayerModelJson(), TrophiesMapping); 

我複製你的代碼,並抓我的頭,爲什麼它沒有工作,直到我把它改成

ko.mapping.fromJS(...) 
+0

謝謝科里科爾。問題不在於ko.mapping.fromJSON,而是與獎盃對象,你的代碼的區別在於你使用self(this)引用,比如self.Name,self.Trophy和self.PrizeMoney。這樣就解決了這個問題。 – Swamy

-1

看看這個例子upida.azurewebsites.net

點擊 - 添加訂單,並在新窗口中,您將看到數組產品。 嘗試添加多個產品,並用數據填充它們。 嘗試保存,看看驗證如何工作,它是knockout.js。

這是服務器端驗證,沒有任何客戶端的限制。

+0

嗯......看起來不像是對我的回答 – kleopatra