我有一個asp.net mvc3項目,我在一個桌面上用批量綁定進行批量編輯。我希望在保存數據的同時進行需求驗證和數字驗證等驗證。有沒有更簡單的方法來淘汰驗證。 PS:我不使用表格。敲除驗證
敲除驗證
回答
看看Knockout-Validation乾淨的設置和使用knockout documentation中描述的內容。下設:活生生的例子1:強制輸入是數字
UPDATE:小提琴已經更新使用cloudfare CDN使用最新KO 2.0.3和1.0.2 ko.validation網址
要設置ko.validation:
ko.validation.rules.pattern.message = 'Invalid.';
ko.validation.configure({
registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: null
});
要設置驗證規則,運用擴展。例如:
var viewModel = {
firstName: ko.observable().extend({ minLength: 2, maxLength: 10 }),
lastName: ko.observable().extend({ required: true }),
emailAddress: ko.observable().extend({ // custom message
required: { message: 'Please supply your email address.' }
})
};
Knockout.js驗證方便,但不穩健。您始終必須創建服務器端驗證副本。就你的情況而言(當你使用knockout.js時),你正在向服務器發送JSON數據並異步返回,所以你可以讓用戶認爲他看到了客戶端驗證,但實際上它將是異步服務器端驗證。
看看這裏的例子upida.cloudapp.net:8080/org.upida.example.knockout/order/create?clientId=1 這是一個「創建訂單」鏈接。嘗試點擊「保存」,並玩產品。 本示例使用codeplex使用upida庫(該庫有spring mvc版本和asp.net mvc)。
如果你不想使用KnockoutValidation庫,你可以自己寫。這是一個強制性字段的例子。
添加JavaScript類與所有你KO延伸或擴展,並添加以下內容:
ko.extenders.required = function (target, overrideMessage) {
//add some sub-observables to our observable
target.hasError = ko.observable();
target.validationMessage = ko.observable();
//define a function to do validation
function validate(newValue) {
target.hasError(newValue ? false : true);
target.validationMessage(newValue ? "" : overrideMessage || "This field is required");
}
//initial validation
validate(target());
//validate whenever the value changes
target.subscribe(validate);
//return the original observable
return target;
};
然後在您的視圖模型擴展您觀察到的是:
self.dateOfPayment: ko.observable().extend({ required: "" }),
有許多的例子在線進行此類驗證。
好吧,但我通過ajax和mvc剃鬚刀和knockout.mapping從服務器端獲取我的viewmodel。我也使用.net mvc,newton json轉換和htlml raw helpers直接從服務器端導入到javaScript模塊中...現在....我怎樣才能擴展我的observable而不用每次應用一個字段 – Clarence
- 1. 敲除驗證對象級驗證
- 2. 敲除驗證 - 油門異步驗證
- 3. 添加驗證敲除
- 4. 延遲敲除驗證
- 5. 敲除自定義驗證
- 6. 幫助敲除驗證
- 7. Web API +敲除驗證
- 8. 敲除驗證未能觸發
- 9. Typescript敲除驗證自定義規則
- 10. 敲除驗證組錯誤檢查
- 11. 驗證日期(年)使用敲除JS
- 12. 嵌套集合上的敲除驗證
- 13. hasfocus綁定的基因敲除驗證
- 14. 基因敲除驗證validatedObservable組錯誤
- 15. coffeescript中的敲除驗證庫
- 16. 敲除驗證未應用錯誤類
- 17. 敲除映射 - 驗證數組
- 18. 如何利用基因敲除驗證
- 19. 敲除驗證和命名空間
- 20. MVC基因敲除驗證顯示和
- 21. 陣列上的敲除驗證
- 22. 對象數組的敲除驗證
- 23. 敲除驗證選擇列表值
- 24. 基因敲除驗證不是workong
- 25. 敲除驗證糾正錯誤
- 26. 基因敲除引導驗證回調?
- 27. 敲除驗證需要元素
- 28. 敲除驗證:動態約束
- 29. 敲除計算和輸入驗證
- 30. 基因敲除驗證問題
難道是我還是IE9和IE10上的小提琴?在Chrome和Firefox上運行。 –
@rob:IE9給了我一個; 「腳本因MIME類型不匹配而被阻止」 - 錯誤。可能你可以禁用這個安全檢查。 – Cohen
@rob:爲了使它在IE中工作,我已經刪除了資源並將knockout.validation複製到小提琴中(醜陋,我知道),但它確實有效:http://jsfiddle.net/KHFn8/1369/ – Cohen