• WebForms UnobtrusiveValidationMode 须要“jquery”ScriptResourceMapping。


        一、问题产生的背景:

        在敲牛腩新闻公布系统的后台登录页面的时候,我们用到了RequiredFieldValidator控件(验证非空控件),该控件的作用是禁止输入规定的内容,RequiredFieldValidator控件有一个属性InitialValue(初值的意思),假设它的值是空,那么这个空间就会起到禁止输入规定的内容的作用了——禁止输入“空”。另外。在验证前会自己主动去掉输入内容两端的空格。当然,这个空间另一个属性ControlToValidate。这个属性是设置对某个控件进行验证,在牛腩新闻公布系统中,我们用它来验证我们输入的username、password、还有验证码是否为空。

        例:

        以下一代码表示RequiredFieldValidator控件对txtCode(验证码文本框)验证,即不同意验证码为空。

       

    <asp:TextBox ID="txtCode" runat="server" CssClass ="textcode" OnTextChanged="txtCode_TextChanged"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="请输入验证码" text="*" ControlToValidate ="txtCode"></asp:RequiredFieldValidator>
        然而,天不遂人愿。牛腩老师用的是vs版本号和我用的vs版本号不一样。我用的是vs2012,他用的是速成版,代码一执行就会报错,详细的错误例如以下!

        WebForms UnobtrusiveValidationMode 须要“jquery”ScriptResourceMapping。请加入一个名为 jquery (区分大写和小写)的 ScriptResourceMapping。


        于是自己在网上找了找此错误的解决方式,试了试。错误解决成功。可是自己非常想知道产生错误的原因啊。

        二、错误原因:

        VisualStudio 2012(或2013) WebForm 4.5 开发中,非常多控件默认Enable了 Unobtrusive ValidationMode(所谓Unobtrusive Validation,就是一种隐式的验证方式)的属性(和jquery的引用相关),但并未对其进行赋值, Programmer必须手动对其进行设置。比方。在进行数据验证时使用的各种validator(今天使用的RequiredFieldValidator控件)。以及进行authorization及authenication设置时,因为须要在前端调用jquery来进行身份验证,都默认Enable了 Unobtrusive ValidationMode。假设不正确该属性进行配置。将会产生ERROR。

        三、解决方式

        在Global.asax中对该属性进行注冊,在根文件夹下加入全局应用程序类Global.asax文件,在Application_Start事件中加入例如以下代码:

    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
    {
    Path = "~/scripts/jquery-1.7.2.min.js",
    DebugPath = "~/scripts/jquery-1.7.2.js",
    CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.min.js",
    CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.2.js"
    }); 
       上面代码的意识是引用的是1.4.1版的jquery,当然,解决错误的方法还有非常多,我仅仅是介绍了一种,假设大件还想用其它的方法,能够去网上查找。

    我给大家几个链接。

        1、http://www.shaoqun.com/a/56680.aspx 

        2、http://www.cnblogs.com/fancybit/articles/3616311.html

        三、小结

        在学习过程中,我们总会遇到问题,到了如今的学习程度,我特别想锻炼自己刨根问底的能力,就是在学习过程中我们尽量把知识往它的祖坟上刨,包含我们遇到的问题,我们一定要找到问题的根源,当这样解决这个问题了之后。自己的心中便有了一种拨开云雾重见天日的感觉,这个感觉,爽!!


  • 相关阅读:
    jsonp 原理和基本使用
    jsonplaceholder直接提供模拟测试数据
    为什么要学mock
    vue基础知识和案例
    winform datagridview中combobox列改变选项时触发其他列变化
    将DataGridView转换为DataTable
    C#中删除字符串最后一个字符串的几种方式
    C#中成员变量和局部变量的区别
    WinForm窗体中如何在一个窗体中取到另一个窗体的值
    ComboBox 中 DisplayMember 和 ValueMember有何区别
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7148768.html
Copyright © 2020-2023  润新知