在ASP.NET MVC中使用Knockout实践07,自定义验证信息的位置与内容

在前两篇中,体验了Knockout的基本验证和自定义验证。本篇自定义验证信息的显示位置与内容。

自定义验证信息的显示位置

通常,Knockout的验证信息紧跟在input后面,通过validationMessage属性可以自定义验证信息的显示位置。

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<style type="text/css">
    .error {
        color: red;
    }
</style>

<div>
    <input type="text" data-bind="value: name"/>
    <p class="error" data-bind="validationMessage: name"></p>
</div>


@section scripts
{
    <script src="~/Scripts/knockout-3.2.0.js"></script>
    <script src="~/Scripts/knockout.validation.js"></script>
    <script src="~/Scripts/zh-CN.js"></script>
    <script type="text/javascript">

        //使用构造函数创建一个View Model
        var Product = function () {
            this.name = ko.observable().extend({ minLength: 3 });
        };

        //创建实例
        var product = new Product();

        //验证设置
        var knockoutValidationSettings = {
            insertMessages: false,
            decorateElement: false,
            errorMessageClass: ‘error‘,
            errorElementClass: ‘error‘,
            errorClass: ‘error‘,
            errorsAsTitle: true,
            parseInputAttributes: false,
            messagesOnModified: true,
            decorateElementOnModified: true,
            decorateInputElement: true
        };
        ko.validation.init(knockoutValidationSettings, true);

        //绑定
        ko.applyBindings(product);

        $(function () {
            ko.decorateElement = false;
        });
    </script>
}


以上,
● 把验证信息显示在了data-bind属性值为validationMessage: name的input上
● 由于重新设置了Knockout-Validation,必须使用ko.validation.init()重新初始化
● insertMessages表示是否把验证信息显示在紧跟input的位置
● decorateElement表示是否要为input加上class="error"

自定义验证信息的内容

如果想重写验证信息的内容,修改如下:

        var Product = function () {
            this.name = ko.observable().extend({ minLength: { params: 3, message: "要我说最小长度是3" } });
        };

时间: 2024-10-11 17:06:59

在ASP.NET MVC中使用Knockout实践07,自定义验证信息的位置与内容的相关文章

在ASP.NET MVC中使用Knockout实践01,绑定Json对象

本篇体验在ASP.NET MVC下使用Knockout,将使用EF Code First创建数据库.最后让Knockout绑定一个Json对象. 创建一个领域模型. namespace MvcApplication3.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public deci

在ASP.NET MVC中使用Knockout实践06,自定义验证、异步验证

在上一篇中体验了Knockout.Validation的基本验证,本篇体验自定义验证和异步验证. 自定义验证规则 ko.validation有一个rules属性,专门用来存放验证规则,它是一个键值对集合类型,key就是自定义验证规则的名称,value是一个json对象. @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <style type="text/c

在ASP.NET MVC中使用Knockout实践05,基本验证

本篇体验View Model验证.Knockout的subscribe方法能为View Model成员注册验证规则. @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <style type="text/css"> .error { color: red; } </style> <input data-bind="

在ASP.NET MVC中使用Knockout实践09,自定义绑定

Knockout真正强大之处在于绑定机制,通过data-bind属性值体现绑定,不仅可以绑定值,还可以绑定事件,甚至可以自定义绑定. 从一个例子看Knockou的绑定机制 假设想给一个button元素变成jQuery UI的button,大致这样做: <button id="btn">点我</button> $('#btn').button( icons: { primary: 'ui-icon-gear' } ); "他山之石,可以攻玉",

在ASP.NET MVC中使用Knockout实践03,巧用data参数

使用Knockout,当通过构造函数创建View Model的时候,构造函数的参数个数很可能是不确定的,于是就有了这样的一个解决方案:向构造函数传递一个object类型的参数data. <input data-bind="value: name"/><hr/> <select data-bind="options: categories, value: category" ></select><hr/> @

在ASP.NET MVC中使用Knockout实践04,控制View Model的json格式内容

通常,需要把View Model转换成json格式传给服务端.但在很多情况下,View Model既会包含字段,还会包含方法,我们只希望把字段相关的键值对传给服务端. 先把上一篇的Product转换成json格式,通过pre元素显示出来. <input data-bind="value: name"/><hr/> <select data-bind="options: categories, value: category" >&

在ASP.NET MVC中使用Knockout实践02,组合View Model成员、Select绑定、通过构造器创建View Model,扩展View Model方法

本篇体验使用ko.computed(fn)计算.组合View Model成员.Select元素的绑定.使用构造器创建View Model.通过View Model的原型(Prototype)为View Model添加扩展方法. □ 使用ko.computed(fn)计算成员 有时候,我们希望把View Model中的几个成员组合起来成为一个新成员,使用ko.computed(fn)可实现. 接着上一篇,为productViewModel这个json对象增加一个计算成员. <div data-bi

ASP.NET MVC控制器里捕获视图的错误验证信息(ErrorMessage)

ViewModel类: /// <summary> /// 评论用验证视图 /// </summary> public partial class VCreateShopComment { [Required(AllowEmptyStrings = false, ErrorMessage = "旺旺是必须的")] public string WW { get; set; } [Required(AllowEmptyStrings = false, ErrorMe

ASP.NET MVC中对Model进行分步验证的解决方法

原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个Model的信息,但是又分页面填写信息的,当时我加上ModelState.IsValid这句验证代码的时候,根本没法通过验证,因为在注册的前面三步,注册用户的Model信息都没填写完整,而ModelState.IsValid是对一个实体的所有属性进行判断验证的.当时很纠结,因为刚接触Asp.net